Excel formulier automatisch invullen met waarden uit JSON

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • BjorntobeWild
  • Registratie: Januari 2005
  • Laatst online: 17-03-2023
Hoi,

Ik ben bezig met een VSTO applicatie te maken om formulieren in Excel automatisch in te vullen. Omdat alle formulieren net iets van elkaar verschillen heb ik binnen dit formulier de cellen een naam gegeven. De celnaam komt overeen met keyname in de JSON-file. Indien de keyname een waarde heeft wordt deze ingevuld in de betreffende celnaam.

Deze manier van importeren lijkt mij het meest eenvoudige werkwijze, maar indien zich in het document veel named ranges bevinden duurt het even voordat het verwerken van de gegevens klaar is. Ik vraag mij af of dit ook sneller/eenvoudiger kan.

Hoe het programma nu werkt
Elk Excelbestand bestaat uit meerdere bladen. In elk werkblad bevinden zich celnamen welke een unieke naam hebben gekregen (named range).

Wat het programma nu doet is het betreffende Excel document openen en middels een foreach loop alle named ranges doorlopen. Komt een named range voor als keyname in de JSON-file, dan wordt de waarde weggeschreven naar de named range. Omdat sommige formulieren nogal veel waarden hebben (bijv. 500) verdeeld over verschillende werkbladen kan het soms even duren voordat alle gegevens zijn verwerkt.

Mijn vraag is nu of de manier van werken efficiënt is of kan deze nog efficiënter worden gemaakt.

Groet,
Bjorn

Alle reacties


Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Als het aantal keys in de JSON-file kleiner is dan het aantal named-ranges in de Excel-werkbladen, kun je het omdraaien: voor elke key kijken of die als namedrange bestaat?

Acties:
  • 0 Henk 'm!

  • BjorntobeWild
  • Registratie: Januari 2005
  • Laatst online: 17-03-2023
Hoi BertS,

Dank voor je reactie. Ik heb hierzelf ook al over nagedacht, maar het aantal keys in de JSON is nog veel groter. In de JSON-file staat ook veel data welke ik niet gebruik.

Groet,
Bjorn

Acties:
  • 0 Henk 'm!

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 13-07 19:16

edeboeck

mie noow noooothing ...

Je zou een "filtertoepassing" kunnen schrijven die op basis van de named ranges de keys uit de JSON filtert (de named ranges hoef je allicht niet elke keer af te lopen: de toepassing zou die 1x kunnen opzoeken en dan opslaan. Als je dan een wijziging in de Excelsheet aanbrengt, roep je die functie even opnieuw op). Met deze gefilterde lijst zou je dan de Excel kunnen invullen.

Ik weet niet of dit een optie is?

  • BjorntobeWild
  • Registratie: Januari 2005
  • Laatst online: 17-03-2023
Hoi edeboeck,

Interessante benadering waar ik zelf nog niet over had nagedacht. Ik zou de 'filtertoepassing' dan eerder zien als een verwijzingsbibliotheek welke ik opsla in een database. Er zijn namelijk meerdere gebruikers die van deze applicatie gebruik gaan maken. Als iemand een wijziging doorvoert zal deze voor iedereen zichtbaar moeten zijn.

Alvast bedankt.

Acties:
  • +1 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 10:44

The Eagle

I wear my sunglasses at night

Als je toch al een DB hebt, importeer de json daar dan in en ga hem vervolgens gebruiken. DB is er voor gemaakt, excel niet.

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 13-07 19:16

edeboeck

mie noow noooothing ...

The Eagle schreef op donderdag 24 februari 2022 @ 08:44:
Als je toch al een DB hebt, importeer de json daar dan in en ga hem vervolgens gebruiken. DB is er voor gemaakt, excel niet.
Goede bedenking, @The Eagle. Dat zou inderdaad het beste zijn: zowel de ranges uit Excel als de JSON in DB... vervolgens die 2 matchen en gericht gaan invullen.

Acties:
  • 0 Henk 'm!

  • BjorntobeWild
  • Registratie: Januari 2005
  • Laatst online: 17-03-2023
The Eagle schreef op donderdag 24 februari 2022 @ 08:44:
Als je toch al een DB hebt, importeer de json daar dan in en ga hem vervolgens gebruiken. DB is er voor gemaakt, excel niet.
Je hebt gelijk, maar de gebruikers zijn gewend om deze rapportages in Excel te maken. De wens is wel om het uiteindelijk allemaal in een database te stoppen. Maar deze wil ik aanvliegen met kleine stapjes. Mijn collega's hebben baat bij kleine veranderingen ;)
Pagina: 1