Toon posts:

Excel formulier automatisch invullen met waarden uit JSON

Pagina: 1
Acties:

Vraag


  • BjorntobeWild
  • Registratie: Januari 2005
  • Laatst online: 22-11-2022
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


  • BertS
  • Registratie: September 2004
  • Laatst online: 13-01 22:19
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?

  • BjorntobeWild
  • Registratie: Januari 2005
  • Laatst online: 22-11-2022
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

  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 19-01 16:09

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: 22-11-2022
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.

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 22:58

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: 19-01 16:09

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.

  • BjorntobeWild
  • Registratie: Januari 2005
  • Laatst online: 22-11-2022
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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee