XLSX naar JSON omzetten

Hier zet je XLSX naar JSON om, gratis en zonder account: sleep het bestand hierboven erin en binnen een paar seconden staat het resultaat klaar om te downloaden. De omzetting gebeurt binnen je eigen browser, dus het bestand wordt nooit geüpload. Het werkt hetzelfde op Windows, macOS en Linux als op iPhone en Android, en het blijft werken als je de verbinding verbreekt.

  • Waar het draait In je browser. Het bestand wordt nooit geüpload.
  • Opnieuw opgebouwd JSON werkt anders dan XLSX. Het is dus niet het geleidelijke kwaliteitsverlies van een lossy codec: wat JSON kan uitdrukken wordt getrouw weergegeven, en wat daar geen equivalent heeft blijft helemaal weg.
  • Maximale grootte Tot 100 MB per bestand, gratis en zonder account.
  • Goed om te weten Alleen het eerste blad wordt gelezen, en daarvan alleen de waarden. Formules, opmaak, kolombreedtes en elk volgend blad blijven achter.

Tot 100 bestanden tegelijk. Verschillende formaten door elkaar is prima.

Het werkblad is de interface die niemand ontworpen heeft

Deze omzetting bestaat vanwege een patroon dat zich in elke organisatie herhaalt: de gezaghebbende versie van iets — een prijslijst, een productcatalogus, een vertaaltabel, een set openingstijden, een mapping van codes naar namen — leeft in een werkblad bijgehouden door iemand die geen ontwikkelaar is, en het moet een programma bereiken dat data verwacht.

Dat is een volkomen redelijke regeling. Een werkblad is een goede bewerkingsinterface, zakelijke gebruikers kennen het al, en een klein beheertool bouwen om het te vervangen is zelden de moeite waard. Wat het nodig heeft is een betrouwbare omzetting bij de grens, en dat is hier het hele werk.

Een raster wordt een array van objecten

De mapping is de voor de hand liggende. De eerste rij wordt behandeld als header en levert de sleutelnamen; elke rij erna wordt één object; elke cel wordt een waarde op dat object. Het resultaat is een array van records, wat de vorm is die een consumerend programma vrijwel altijd wil.

Het loont om bewust over de headerrij na te denken, want die cellen worden sleutelnamen in je code. Kort, kleine letters, geen spaties en geen leestekens levert sleutels op die prettig zijn om te typen; een header die "Eenheidsprijs (€, excl. btw)" leest, levert iets op dat niemand twee keer wil intypen.

Datums zijn het eerste dat misgaat

Een werkblad slaat datums niet als datums op. Het slaat een getal op dat dagen telt vanaf een oorsprong, en de celopmaak zorgt dat 45678 er als een datum uitziet op het scherm. Omzetten geeft terug wat er echt in het bestand staat, wat het getal is.

De twee manieren eromheen zijn beide bewust. Zet de kolom in het werkblad op tekst en typ ISO-datums erin, wat het bestand zelfbeschrijvend maakt en elke omzetting overleeft. Of transformeer de waarden na het omzetten, door zelf de dagentel-rekenkunde toe te passen. Beide zijn prima; het probleem pas in productie ontdekken niet.

Voorloopnullen en lange identifiers gingen al verloren voor je begon

Een postcode, een productcode, een banksorteercode of een burgerservicenummer opgeslagen in een cel opgemaakt als getal is zijn voorloopnullen al kwijtgeraakt — Excel deed dat toen de waarde getypt of geïmporteerd werd, en het bestand bevat een getal.

Hetzelfde geldt voor identifiers boven de vijftien cijfers, die hun laatste cijfers verliezen aan floating point in het werkblad zelf. Geen omzetter kan een van beide herstellen, want de informatie zit niet in het bestand. De oplossing zit stroomopwaarts: die kolommen moeten in het werkblad als tekst opgemaakt zijn, en het is de moeite waard om dat eenmaal te zeggen tegen wie het bijhoudt in plaats van de uitvoer elke maand te repareren.

Wat een werkblad heeft dat JSON niet heeft

Formules, en je krijgt hun resultaten — wat je wilde, want een programma heeft niets aan een formule. Opmaak, kleuren, voorwaardelijke regels en kolombreedtes, geen van alles data. Grafieken, opmerkingen en samengevoegde cellen, die geen equivalent hebben.

Samengevoegde cellen zijn degene om op te letten. Een samengevoegde header over drie kolommen is een vormgevingstruc, en het levert een object op met één sleutel en twee lege — wat een vreemd ogend record is dat uit een heel logisch ogend blad kwam. Platte headers, één cel per kolom, zijn wat deze omzetting saai maakt, en saai is het doel.

Waar het past in een build

De gebruikelijke regeling is het werkblad als bewerkbare bron te bewaren, naar JSON om te zetten als stap, en de JSON naast de code te committen. De data is dan te beoordelen in een pull request, versiebeheerd, en beschikbaar tijdens de build zonder runtime-afhankelijkheid van een bestand dat iemand kan verplaatsen.

Twee gewoontes maken dat het over tijd blijft werken. Zet elke keer op dezelfde manier om zodat een diff echte wijzigingen toont in plaats van herordening. En valideer het resultaat tegen een schema voor het gecommit wordt, zodat een kolom hernoemd door een goedbedoelende collega een controle laat falen in plaats van stilzwijgend objecten met een ontbrekend veld te produceren.

Wanneer CSV het betere doel is

Gaat de bestemming naar een databaseimport, een analysetool of een datapipeline, dan is CSV meestal het betere tussenformaat: het streamt, elk systeem leest het, en het legt geen nestingsstructuur op aan data die er geen heeft.

JSON verdient zijn plek als de data code in gaat — een front-end, een configuratiebestand, een API-fixture — waar een array van objecten is wat de taal wil en het parsen één regel is. Kies op basis van wat het bestand leest in plaats van welk formaat moderner klinkt.

Het bestand blijft op je machine

De omzetting draait in het browsertabblad op je eigen processor, dus wordt er niets geüpload en houdt geen server een kopie. Er is geen account, geen wachtrij en geen dagelijkse toelage; de groottegrens is 100 MB per bestand, honderd bestanden per sleep.

Dat is hier niet bijkomstig. De werkbladen die mensen omzetten zijn intern: prijzen, marges, klantenlijsten, personeelsdossiers, onuitgebrachte catalogi. Ze nergens naartoe sturen is de eenvoudigste vorm van niemand ermee hoeven te vertrouwen.

Zo zet je XLSX naar JSON om

  1. Sleep je XLSX-bestand op deze pagina, of klik om er een te kiezen.
  2. Kies JSON als doel. De omzetting gebeurt in je browser en het bestand wordt niet geüpload.
  3. Download het klare JSON-bestand.

XLSX of JSON: wat er verandert

XLSX vergeleken met JSON
XLSXJSON
Volledige naamExcel-werkmapJavaScript Object Notation
Bestandsextensie.xlsx.json
Mediatypeapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/json
Voor het eerst gepubliceerd20072001
Uitgegeven doorMicrosoft
SpecificatieECMA-376RFC 8259
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserElke browser
In plaats daarvan overwogenCSV, ODS, ParquetXML, YAML, NDJSON

Het resultaat openen

JSON opent in elke actuele browser. XLSX komt nog minder ver. Gaat het bestand naar een webpagina of een formulier, dan is dat meestal de hele reden voor de omzetting.

De gebruikelijke programma's overlappen niet: XLSX open je in Microsoft Excel, LibreOffice Calc en Google Sheets, JSON in Visual Studio Code, jq en Postman — wie het resultaat krijgt, heeft dus iets uit de tweede rij nodig.

Waarvoor elk formaat bedoeld is

De twee mikken op ander werk: XLSX op bewerken, JSON op gegevens tussen programma’s verplaatsen en het web. Dat is het afwegen waard, want de reden dat het ene bestaat is meestal de reden dat het andere onhandig is.

XLSX is het formaat van Microsoft, verschenen in 2007. Het is vastgelegd in ECMA-376, en dat is de moeite waard als het bestand het gereedschap moet overleven dat het schreef.

JSON stamt uit 2001, vastgelegd in RFC 8259. Visual Studio Code, jq en Postman lezen het formaat.

Van XLSX naar JSON: veelgestelde vragen

Wordt mijn XLSX-bestand ergens heen geüpload?

Nee. Deze omzetting gebeurt volledig in je browser, dus het bestand verlaat je apparaat niet. Je kunt het zelf nagaan: open het netwerktabblad van de ontwikkelaarshulpmiddelen en zet iets om. Je ziet de pagina zelf en de verzoeken voor statistiek en advertenties waarmee deze dienst betaald wordt, en geen enkel verzoek dat je bestand meeneemt. De motor achter juist dit paar is SheetJS, een lezer en schrijver van spreadsheets in JavaScript; je browser haalt die één keer op en bewaart hem.

Is XLSX naar JSON omzetten gratis?

Ja. Geen account, geen watermerk en geen dagtegoed dat opraakt: het draait op je eigen machine, dus je mag zo vaak terugkomen als je wilt. De browser verwerkt bestanden tot 100 MB, 100 tegelijk. SheetJS wordt naar je eigen machine gehaald en draait daar, en daarom staat er geen teller op.

Gaat er kwaliteit verloren bij het omzetten van XLSX naar JSON?

XLSX en JSON beschrijven de inhoud op fundamenteel andere manieren. De omzetting is daarom een reconstructie en geen kopie: getrouw, maar niet byte voor byte identiek. Alleen het eerste blad wordt gelezen, en daarvan alleen de waarden. Formules, opmaak, kolombreedtes en elk volgend blad blijven achter.

Moet ik iets installeren om een JSON-bestand te openen?

Voor de omzetting niet: die gebeurt in de browser die je al open hebt staan. Om het resultaat te openen heb je daarna het programma nodig waarmee je apparaat JavaScript Object Notation normaal weergeeft.

Meer over deze formaten