Prečo prevod XLSX na JSON nie je rovnaký ako prevod na CSV
Na prvý pohľad sa môže zdať, že konverzia Excelu do JSON je len ďalšia exportná operácia. XLSX aj JSON sú formáty na ukladanie štruktúrovaných dát, takže by sa zdalo, že ide o jednoduché pretypovanie. V skutočnosti je rozdiel medzi týmito dvoma formátmi podstatný a práve v ňom spočíva hlavná hodnota nástroja na prevod XLSX do JSON.
Súbor XLSX nie je jednoduchý textový súbor. Je to ZIP archív obsahujúci XML súbory, ktoré definujú štruktúru zošita – viacero hárkov, typy buniek (text, číslo, dátum, boolovská hodnota), vzorce, formátovanie (fonty, farby, ohraničenia) a metadáta. Keď otvoríte XLSX v Exceli, vidíte vypočítané výsledky vzorcov, formátované dátumy a farby buniek. Samotný súbor však ukladá pôvodné hodnoty, nie vzhľad. JSON funguje úplne inak. Je to čisto textový formát, ktorý podporuje iba šesť typov hodnôt: reťazec, číslo, boolovskú hodnotu, null, pole a objekt. Žiadne formátovanie, žiadne vzorce, žiadne viacnásobné hárky.
Prevod do CSV by všetky tieto rozdiely ignoroval – každá bunka sa stane textovým reťazcom, čísla sa uzatvoria do úvodzoviek, boolovské hodnoty stratia svoju podstatu. Kým CSV ploští tabuľku do čiarového textu, JSON zachováva typy: číslo 42 zostane číslom 42 (nie reťazcom "42"), boolovská hodnota TRUE zostane true (nie reťazcom "TRUE"). Tento rozdiel je kľúčový pre vývojárov, ktorí pracujú s rozhraniami API, kde JSON očakáva typované hodnoty. Ak by číslo bolo prevedené na reťazec, na strane servera by spôsobilo chybu pri validácii, prípadne by vyžadovalo manuálne pretypovanie.
Ďalšia odlišnosť spočíva v štruktúre. XLSX tabuľka je vždy plochá – prvý riadok sú hlavičky, ďalšie riadky sú dáta. Z tejto plochej štruktúry vznikne v JSON pole objektov, kde každý objekt má kľúče zodpovedajúce hlavičkám. Ak sa hlavička opakuje, získa príponu _2, _3. Vznikne však iba jeden stupeň zanorenia. Ak máte v XLSX hierarchiu (napríklad zlúčené bunky, viacúrovňové hlavičky), nástroj ju nevyčarí automaticky. Prevod je presne tak hlboký, ako je štruktúra prvého hárka – a nie hlbší.
Ako prebieha konverzia v prehliadači – prečo nie je potrebný server
Nástroj na prevod XLSX do JSON beží výhradne na strane klienta, teda priamo vo vašom prehliadači. Neposiela sa žiadny súbor na server, nevykonáva sa vzdialené spracovanie. Ide o čisto klientskú logiku.
XLSX súbor je ZIP archív. Prehliadač ho pomocou JavaScriptu rozbalí, prečíta XML súbory, ktoré špecifikujú jednotlivé hárky a bunky, a extrahuje viditeľné hodnoty. Celý proces prebieha v pamäti RAM počítača. Výstupom je JavaScriptový objekt, ktorý sa následne preformátuje do JSON reťazca a ponúkne na stiahnutie.
Tento prístup má dve zásadné výhody. Prvou je súkromie. Firmy, ktoré pracujú s citlivými dátami – napríklad mzdy v Exceli, zoznamy klientov, finančné reporty – nemusia dôverovať serveru tretej strany. Dáta ani na okamih neopustia zariadenie. Druhou výhodou je rýchlosť. Pripojenie na server, nahrávanie súboru, čakanie na spracovanie a sťahovanie hotového JSON súbora je nahradené okamžitou konverziou. Súbor s desiatkami tisíc riadkov sa spracuje v priebehu sekúnd.
V praxi to znamená, že nástroj funguje úplne rovnako v režime offline, pokiaľ je stránka načítaná. JavaScriptová knižnica je stiahnutá pri prvom otvorení, všetky ďalšie konverzie bežia už bez sieťového pripojenia.
Mapovanie typov: čo z Excelu skutočne prežije do JSON
Typové mapovanie je jadrom toho, čo robí túto konverziu inou než prevod do CSV. Každá bunka v Exceli má definovaný typ. Nástroj prevádza tieto typy na zodpovedajúce JSON hodnoty podľa tohto kľúča:
| Typ bunky v Exceli | JSON hodnota | Príklad |
|---|---|---|
| Textový reťazec | reťazec | "John Doe" |
| Číslo (integer, float, percento) | číslo | 42, 3.14 |
| Boolovská hodnota | boolean | true, false |
| Dátum | reťazec (ISO formát) | "2024-01-15T10:30:00.000Z" |
| Prázdna bunka | prázdny reťazec "" |
(nič) |
| Chybová bunka | reťazec s chybovým kódom | "#DIV/0!" |
Dôležité je, že boolovské hodnoty v Exceli sú ukladané ako 0 (FALSE) alebo 1 (TRUE), no v JSON sa správne mapujú na false a true. Dátum v Exceli je číslo predstavujúce počet dní od 30. decembra 1899 (alebo od 1. januára 1904 pri starších súboroch). Tento nástroj prevádza tieto číselné hodnoty na dátumové reťazce vo formáte ISO 8601.
Čo sa stráca? Všetko, čo nie je číselná hodnota, textová hodnota, boolovská hodnota alebo dátum. Formátovanie (fonty, farby, ohraničenia, veľkosť písma) je nenávratne odstránené. Vzorce nie sú vypočítané. Nástroj používa len viditeľné hodnoty, teda výsledok posledného uloženia. Ak bunka obsahuje vzorec =A1+B1, v JSON sa objaví číslo, ktoré bolo uložené v čase posledného uloženia Excel súboru. Ak sa vzorec odvtedy zmenil, ale nebol uložený, prevedie sa stará hodnota.
Pravidlá, limity a chybové hlásenia – čo sa stane, keď niečo nie je v poriadku
Nástroj má jasne definované hranice, pri ktorých nedokáže spracovať súbor.
Prvým a najdôležitejším pravidlom je, že sa spracúva iba prvý hárok Excel súboru. Ak máte viac hárkov, musíte ich najskôr skopírovať do nového súboru, prípadne použiť iný nástroj.
Limity pre veľkosť súboru, počet riadkov a počet stĺpcov sú nastavené tak, aby konverzia neprekročila dostupné systémové prostriedky. Súbor môže mať maximálne 8 MB. Tabuľka môže mať maximálne 10 000 riadkov a 200 stĺpcov. Ak súbor prekročí maximálnu veľkosť, zobrazí sa hlásenie: „This file is too large. Use a file under ‹max›.“ Ak konverzia trvá dlhšie ako približne 12 sekúnd, zastaví sa s hlásením: „Táto konverzia trvá príliš dlho. Skúste menší súbor.“
Chybové hlásenia sú konkrétne:
- „Tento excelovský súbor sa nepodarilo otvoriť.“ – ak XLSX nie je platný ZIP archív, má poškodenú XML štruktúru, alebo nie je vôbec XLSX.
- „Tento súbor neobsahuje žiadne riadky tabuľky.“ – ak prvý hárok neobsahuje žiadne údaje (iba prázdne bunky).
- „Vyberte súbor typu CSV, JSON alebo XLSX.“ – ak používateľ nahral iný formát.
- „Tento súbor sa nepodarilo skonvertovať.“ – všeobecná chyba, keď nie je možné zistiť presný dôvod.
- „Konverzia bola zrušená.“ – ak používateľ zrušil operáciu.
- „Táto konverzia trvá príliš dlho. Skúste menší súbor.“ – interný timeout pri veľmi veľkých súboroch.
Všetky tieto hlásenia vznikajú na strane klienta a nie sú odosielané na server.
Pre koho je tento nástroj určený a ako ho používať v praxi
Hlavnými používateľmi sú weboví vývojári, ktorí dostanú tabuľkové dáta od zákazníkov alebo kolegov v Exceli a potrebujú ich integrovať do svojej aplikácie. Bez tohto nástroja by museli otvoriť Excel, uložiť ako CSV a potom v kóde ručne prevádzať reťazce na čísla. S JSONom to odpadá.
Druhou skupinou sú dátoví analytici, ktorí pracujú s nástrojmi ako D3.js, Chart.js, prípadne s Pythonovými knižnicami. JSON je pre tieto nástroje prirodzený vstup. Namiesto manuálneho prepisovania dát zo štvrťročného reportu stačí jeden drag-and-drop.
Tretou skupinou sú ľudia, ktorí potrebujú rýchlu jednorazovú konverziu bez inštalácie softvéru. Čokoľvek, čo by vyžadovalo inštaláciu Excelu, Pythonu alebo iného nástroja, je zbytočne komplikované. Prehliadač je všade.
Z praktického hľadiska je postup jednoduchý: otvorte stránku, pretiahnite XLSX súbor na vyznačenú oblasť (prípadne kliknite na tlačidlo pre výber súboru), a o chvíľu máte k dispozícii náhľad a tlačidlo na stiahnutie.
Čo si overiť v Exceli pred konverziou – ako predísť zlým výsledkom
Hoci nástroj funguje spoľahlivo, kvalita výstupu priamo závisí od kvality vstupu. Tu je niekoľko vecí, ktoré stojí za to skontrolovať ešte pred nahraním súboru.
Prvým rizikom sú zlúčené bunky. Ak v Exceli zlúčite bunky v hlavičke (napríklad bunka A1 a B1 sú zlúčené), nástroj túto informáciu nerozpozná a prvú bunku vyplní textom, druhú nechá prázdnu, prípadne ju vyplní opakovaním hodnoty. Výsledkom je JSON s duplicitnými hlavičkami. Riešením je odstrániť zlúčenie buniek a vyplniť hlavičky samostatne.
Druhým častým problémom sú skryté stĺpce alebo riadky. Nástroj ich nevynecháva; skryté dáta sa prevedú rovnako ako viditeľné. Ak chcete v JSON iba viditeľné stĺpce, musíte ich v Exceli najskôr odstrániť, nie len skryť.
Tretím rizikom sú prázdne riadky uprostred tabuľky. Ak je v prvom hárku niekoľko riadkov s údajmi, potom prázdny riadok a potom ďalšie dáta, nástroj interpretuje prázdny riadok ako objekt so všetkými hodnotami null. V JSON potom vznikne pole, ktoré obsahuje prázdne objekty, čo komplikuje spracovanie. Najlepšie je odstrániť všetky prázdky riadky.
Štvrtým detailom sú dátumy. Ak sú v Exceli uložené ako text (napríklad "15.1.2024"), prevedú sa ako text. Ak sú uložené ako dátumový typ, prevedú sa na ISO reťazec. Rozdiel je dôležitý, hlavne ak očakávate jednotný formát.
V neposlednom rade, ak súbor obsahuje vzorce, a vy neskontrolujete, že sú vypočítané a uložené, môžete získať staré hodnoty. Pred uložením do XLSX spustite v Exceli prefresh všetkých vzorcov (Ctrl+Alt+F9) a uložte súbor.
Časté otázky (FAQ)
Čo ak mám Excel s viacerými hárkami a potrebujem dáta z viacerých?
Nástroj spracúva iba prvý hárok. Pre viac hárkov je potrebné každý hárok skopírovať do samostatného súboru a previesť jednotlivo.
Prečo sa v JSON objavuje moja hodnota ako text, hoci v Exceli je číslo?
Excelová bunka môže byť naformátovaná ako text, aj keď v nej je číslo. V tom prípade sa v JSON objaví reťazec. Skontrolujte formát bunky v Exceli a zmeňte ho na „Číslo“ pred uložením.
Môžem konvertovať súbor väčší ako ‹max› MB?
Nie. Súbor presahujúci maximálnu veľkosť 8 MB je odmietnutý s chybovou hláškou „This file is too large. Use a file under ‹max›.“. Súbor rozdeľte na menšie časti, prípadne odstráňte nepotrebné stĺpce alebo riadky.
Čo sa stane s dátumami, ktoré sú v Exceli uložené ako čísla (serial date values)?
Nástroj sa pokúša previesť tieto čísla na dátumové reťazce, no presnosť závisí od konkrétneho nastavenia kalendára. V niektorých prípadoch môžu byť dátumy o niekoľko dní posunuté (napríklad kvôli roku 1904). Pred prevodom skontrolujte, že dátumy sú v Exceli uložené ako dátumy, nie ako čísla.
Prečo nie sú v JSON zachované moje vzorce?
Vzorce nie sú v JSON uložené. Nástroj číta len viditeľné hodnoty buniek – to, čo Excel uložil ako výsledok posledného výpočtu. Ak potrebujete vzorce, musíte ich zachovať v samostatnom súbore.
Ako zistím, že konverzia prebehla úspešne?
Po konverzii sa zobrazí náhľad výsledku (prvých 8 riadkov a 8 stĺpcov), počet riadkov a stĺpcov a veľkosť výstupného JSON súboru. Ak sa zobrazí chybové hlásenie, konverzia zlyhala.