Hvad sker der, når du konverterer en XLSX-fil til JSON
At konvertere en Excel-fil (XLSX) til JSON er fundamentalt forskelligt fra at konvertere den til CSV. En XLSX-fil er i virkeligheden en zippet samling af XML-dokumenter, der kan indeholde flere regneark, celletyper (tekst, tal, dato, boolean), formler og omfattende formatering. JSON er derimod et struktureret, typet format, der understøtter objekter, arrays, tal, booleaner og null. Når du konverterer, bliver numeriske og boolske celleværdier bevaret som typede JSON-værdier – de tvinges ikke ind i anførselstegn som i CSV. Celleformatering, formler (som ikke beregnes) og data ud over det første regneark kasseres. CSV flader hver række ud til en linje med kommasepareret tekst; JSON repræsenterer den tabulære struktur som et array af objekter, hvor kolonnenavne bliver nøgler. Men kilden er en flad tabel – XLSX-tabellen har ikke i sig selv hierarkier – så indlejrede JSON-strukturer oprettes ikke automatisk.
Input, output og brugergrænseflade
Siden kræver ét input: en XLSX-fil, som du enten kan trække og slippe eller vælge via en filvælger. Outputformatet skal være JSON. Resultatet er en konverteret JSON-fil klar til download, en forhåndsvisning, antallet af rækker og kolonner i den konverterede tabel samt filstørrelsen på JSON-outputtet.
Konverteringen kører udelukkende i din browser – intet uploades til nogen server. Det betyder, at følsomme data forbliver på din lokale maskine, hvilket er en central privatlivsfordel.
Datatype-mapping: Hvordan Excel-celler bliver til JSON-værdier
En af de største forskelle fra CSV er, hvordan celletyper håndteres. CSV gemmer alt som tekst; JSON kan bevare den oprindelige type. Tabellen nedenfor viser mappingen:
| Excel-celletype | JSON-værdi | Eksempel |
|---|---|---|
| Tal (heltal) | Number (heltal) | 42 → 42 |
| Tal (decimal) | Number (decimal) | 3,14 → 3.14 |
| Boolean (SAND/FALSK) | Boolean | SAND → true |
| Dato | String (ISO 8601-lignende format) | 01-01-2024 → "2024-01-01T00:00:00.000Z" |
| Tekst | String | "Hej verden" → "Hej verden" |
| Tom celle | null | – → null |
Datoer er en særlig udfordring. Excel gemmer datoer som serienumre (f.eks. 44927 for 1. januar 2023). Konverteringen forsøger at fortolke disse som datoer og outputte dem som ISO-strengte. Men hvis cellen indeholder en formel, der ikke er beregnet, eller hvis serienummeret ikke kan tolkes, kan resultatet blive en uventet streng eller null. Det er almindeligt at se datoer blive til tal, hvis konverteringen ikke genkender formatet korrekt.
Hvorfor formler forsvinder – og hvad der i stedet gemmes
En XLSX-fil indeholder både formlen (f.eks. =SUM(A1:A10)) og den sidst gemte værdi af den beregnede formel. Når siden konverterer, bruges kun den gemte værdi. Formlen i sig selv overføres ikke til JSON. Det skyldes, at JSON ikke har et indbygget udtrykssprog, og at klient-side JavaScript ikke kan genberegne Excel-formler pålideligt uden en fuld regnemaskine.
Hvis en celle indeholder =B2*C2 og den sidst gemte værdi er 42, så bliver outputtet 42 som et tal. Hvis cellen derimod indeholder =NA() eller en anden funktion, der returnerer en fejlværdi, kan resultatet blive en streng som "#N/A" eller en tom værdi. Det er vigtigt at vide, at den konverterede JSON ikke indeholder nogen spor af den oprindelige formel – kun det beregnede resultat, som Excel sidst har gemt.
Det betyder også, at hvis du har brug for at bevare formlerne til senere genberegning, skal du vælge et andet format (f.eks. selve XLSX-filen) eller en anden konverteringsstrategi.
Den begrænsning af kun ét regneark – og hvad du gør, når du har brug for flere
Siden læser kun det første regneark i XLSX-filen. Hvis din fil har flere faner, ignoreres alle efter den første. Det er en bevidst designbeslutning: JSON er et fladt format, og det at kombinere flere regneark ville kræve en eller anden form for indlejring, som ikke er indbygget i værktøjet.
Hvis du har data fordelt på flere regneark, er der to løsninger:
- Slå regnearkene sammen i Excel, inden du konverterer. Opret en ny fane, og brug formler eller Power Query til at kombinere data fra alle relevante ark i én tabel.
- Konverter hvert regneark separat ved at gemme hver fane som sin egen XLSX-fil (eller kopiere indholdet til nye filer) og konvertere én ad gangen.
Hvis det første regneark ikke indeholder nogen rækker med data, får du fejlmeddelelsen "This file has no table rows." Det sker typisk, hvis arket kun indeholder overskrifter eller er helt tomt.
Hvad der sker med celleformatering, skjulte rækker og kolonner
Celleformatering – skrifttyper, farver, kantlinjer, baggrundsfarver, datofortolkning – bevares ikke i JSON. JSON gemmer kun data, ikke præsentation. Hvis du har brug for at bevare farvekodning eller layout, skal du enten inkludere en separat stilbeskrivelse eller bruge et format som HTML eller PDF.
Skjulte rækker og kolonner behandles forskelligt. Hvis en række er skjult i Excel, kan den stadig indeholde data og vil blive inkluderet i JSON-outputtet. Det samme gælder skjulte kolonner. Der er ingen indbygget filtrering, der fjerner skjulte celler. Hvis du vil udelade dem, skal du først fjerne dem i Excel.
Mergede celler er en anden faldgrube. Når to eller flere celler er flettet, gemmer Excel kun værdien i den øverste venstre celle; de andre celler er tomme. I JSON vil du derfor se værdien i den første celle og null eller tom streng i de efterfølgende. Hvis du har en overskrift, der strækker sig over flere kolonner, vil kun den første kolonne få overskriften; de andre vil være tomme, hvilket kan bryde JSON-strukturen.
Fejlmeddelelser og begrænsninger i filstørrelse
Siden viser specifikke fejlmeddelelser, når noget går galt. De dækker de mest almindelige scenarier:
- "This Excel file could not be opened." – XLSX-filen er korrupt eller kan ikke parses af klient-side-biblioteket.
- "This file has no table rows." – Det første regneark indeholder ingen rækker med data.
- "This file is too large. Use a file under ‹max›." – Filstørrelsen overstiger grænsen.
‹max›udskiftes med den faktiske grænse. - "This table has more than ‹max› rows." eller "This table has more than ‹max› columns." – Tabellen overstiger række- eller kolonnebegrænsningen.
- "Choose a CSV, JSON or XLSX file." – Du har valgt et andet filformat end de understøttede.
- "Could not convert this file." – En generisk konverteringsfejl.
- "Conversion cancelled." – Du har afbrudt konverteringen manuelt.
- "This conversion is taking too long. Try a smaller file." – Behandlingstiden overstiger en timeout.
Disse grænser er sat for at sikre, at klient-side-behandlingen forbliver hurtig og stabil. Store filer kan ellers få browseren til at fryse eller løbe tør for hukommelse.
FAQ
Hvad sker der med datoer? Datoer konverteres til ISO 8601-strengte (f.eks. "2024-01-01T00:00:00.000Z"), hvis det er muligt. Hvis cellen indeholder en formel, der ikke er beregnet, eller hvis serienummeret ikke kan tolkes, kan resultatet blive et tal eller null. Det er en god idé at tjekke datoerne i JSON-outputtet efter konverteringen.
Kan jeg konvertere en XLSX-fil med flere regneark? Kun det første regneark læses. Hvis du har brug for data fra andre faner, skal du enten slå dem sammen på forhånd eller konvertere hver fane separat.
Hvad med formler? Formler beregnes ikke. JSON-outputtet indeholder kun den sidst gemte værdi af hver celle. Hvis du har brug for formlerne selv, skal du beholde XLSX-filen.
Hvorfor er nogle celletyper ændret i JSON? Fordi JSON bevarer numeriske og boolske typer, mens Excel ofte gemmer alt som tekst i CSV. Hvis du ser et tal, der skulle være en streng (f.eks. "00123"), er det fordi Excel har gemt det som et tal. Du kan løse det ved at formatere cellen som tekst i Excel, inden du konverterer.
Er mine data sikre, når jeg konverterer online? Ja. Konverteringen sker udelukkende i din browser (client-side). Intet uploades til nogen server. Det betyder, at følsomme data forbliver på din lokale maskine.
Hvad gør jeg, hvis min fil er for stor? Hvis du får fejlmeddelelsen om for stor fil, kan du dele XLSX-filen op i mindre dele (f.eks. ved at kopiere et delvist datasæt til en ny fil) eller reducere antallet af rækker/kolonner. Alternativt kan du eksportere til CSV først og derefter konvertere CSV til JSON, men så mister du typedata.