JSON-faili teisendamine Exceli (XLSX) vormingusse
See tööriist võtab ühe JSON-faili ja teisendab selle Exceli (XLSX) failiks. Kuna JSON võib sisaldada hierarhilisi struktuure – objekte, massiive, pesastatud võtmeid –, tuleb see enne tabelisse panemist lameks teha (flatten). Tööriist teeb seda automaatselt: iga objekti võtmetest saavad veerupäised, iga objektist saab rida ning pesastatud võtmete nimedesse lisatakse punktiga eraldatud teed (nt address.city). Tulemust saab eelvaadata ja seejärel valmis arvutustabeli alla laadida.
Mis teeb selle lehe teistsuguseks
JSON on tüübitud ja pesastatav – see võib sisaldada objekte, massiive, numbreid, tõeväärtusi ja null-väärtusi. Tavaline arvutustabel ei suuda seda hierarhiat otseselt kujutada. Seetõttu rakendab see teisendus lameks tegemise reeglit (dot-path keys), mida pole vaja CSV-st või Excelist teisendades, sest need on juba lamedad.
Väljundvorming XLSX on pakitud XML-töövihik (Office Open XML), mis suudab loomupäraselt talletada andmetüüpe nagu numbrid ja tõeväärtused – erinevalt CSV-st, mis taandab kõik tekstiks. Samas ei säilita tööriist valemeid ega lahtrite kujundust; kirjutatakse ainult JSON-allikast pärinev nähtav staatiline andmestik.
Sisend ja väljund: kuidas tööriist töötab
Sisend: Üks JSON-fail korraga. Fail peab olema tabelikujuline – see tähendab kas objektide massiiv või massiivide massiiv. Kui JSON on näiteks üksik objekt, aktsepteeritakse ka seda – see teisendatakse ühe reaga tabeliks.
Väljund: XLSX-fail. Lisaks kuvab tööriist eelvaate (esimesed 8 rida ja 8 veergu), teisendatud tabeli ridade ja veergude arvu ning väljundfaili suuruse. Kogu teisendus toimub brauseris – ühtki faili ei laadita serverisse, mis tagab andmete privaatsuse.
Kui JSON on tabelikujuline, toimub teisendus järgmiselt:
- Objektide massiiv: iga objekt annab ühe rea, objekti võtmetest saavad veerupäised. Pesastatud objektide võtmed laiendatakse punktteega (nt
address.city). - Massiivide massiiv: iga sisemine massiiv annab ühe rea, veerupäiseid ei genereerita – esimene sisemine massiiv on lihtsalt lehe esimene rida.
- Kui objektist puudub võti, mis esineb teistes objektides, jäetakse puuduv lahter tühjaks.
Reeglid ja erijuhud
Tööriist järgib rangelt kindlaid reegleid, mis tulenevad nii JSON-i olemusest kui ka arvutustabeli piirangutest.
- Tekitatakse ainult üks tööleht, nimega Sheet1. Mitut lehte, valemeid ega lahtrite vormindust JSON-ist üle ei kanta.
- Kui JSON sisaldab
null-väärtusi, jääb vastav lahter XLSX-is tühjaks. Tõeväärtused (true/false) salvestatakse tõeväärtustena, mitte tekstina. Numbrid jäävad numbriteks. - Veateated, mis võivad ilmuda:
- Choose a CSV, JSON or XLSX file.
- This file is too large. Use a file under ‹max›.
- This JSON is invalid or not table‑shaped.
- This file has no table rows.
- This conversion is taking too long. Try a smaller file.
- Conversion cancelled.
- Could not convert this file.
Tähtis: tööriist ei arvuta valemeid ega säilita vormindust.
Kes seda vajab
- Inimene, kellel on hierarhilised andmed JSON-failis (API-st või konfiguratsioonist) ja kes soovib neid analüüsida või jagada arvutustabelina.
- Andmeteadlane, kes peab pesastatud JSON-objekte lameks tegema ilma kohandatud koodi kirjutamata.
- Keegi, kes soovib säilitada arvulisi ja tõeväärtuslikke andmetüüpe – XLSX suudab neid salvestada, CSV taandab kõik tekstiks.
- Meeskonnaliige, kes saab JSON-faile ja peab nendega koostööd tegema Excelit kasutavate kolleegidega.
Vaatame näidet. Kujutage ette JSON-i, mis sisaldab kasutajaid ja nende aadresse:
[
{ "name": "Mari", "age": 30, "address": { "city": "Tallinn", "zip": 10111 } },
{ "name": "Jaan", "age": 25, "address": { "city": "Tartu", "zip": 51004 } }
]
Pärast teisendust saame XLSX-is tabeli veergudega name, age, address.city, address.zip. Iga rida kannab ühe objekti andmeid. age on number, zip on number, name on tekst. Tööriist teeb selle automaatselt.
Tehnilised üksikasjad: JSON, lameks tegemine ja XLSX
JSON-i struktuur
JSON (JavaScript Object Notation) koosneb primitiividest (string, number, boolean, null) ja struktuuridest (objekt, massiiv). Objektid on võtme-väärtuse paarid, massiivid järjestatud väärtuste loendid. See paindlikkus teeb JSON-ist ideaalse API-de ja konfiguratsioonide jaoks, kuid sellest tabeli tegemine nõuab otsuseid.
Lameks tegemine dot-path meetodil
Kui objekt sisaldab teist objekti (nt address), siis selle võtmed lükatakse punktiga eraldatud teega vanema nime alla. Näiteks address.city tähendab, et algses JSON-is oli objekt address, millel võti city. Kui pesastus on sügavam, tekib pikem tee (nt address.location.coordinates.lat).
Kui väärtus on primitiivide massiiv, muutub see üheks lahtriks, mis sisaldab selle massiivi JSON-esitust – nt `` stringina. Objektide massiivide rekursiivne lamedaks muutmine objektide sees ei ole veergude puhul toetatud; selle asemel käsitletakse pesastatud massiivi skalaarväärtusena.
Andmetüübid JSON vs Excel
| JSON-i tüüp | XLSX-i esitus |
|---|---|
| Number | Number |
| Boolean | Boolean |
| String | String |
| Null | Tühi lahter |
XLSX-vorming salvestab lahtri tüübi metaandmetena – näiteks cell type="number" või cell type="boolean". See erineb CSV-st, kus kõik on tekst, mistõttu "true" loetakse mõnikord tekstiks. Seega, kui on oluline, et Excel tunnistaks arve arvudeks ja tõeväärtusi tõeväärtusteks, on XLSX parem valik.
XLSX failivorming
XLSX on ZIP-arhiiv, mis sisaldab XML-faile (Office Open XML). See tööriist kirjutab ainult miinimumi: ühe töölehe JSON-i andmetega.
Piirangud ja tavalised vead
- Pesastatud massiivid – kui objekt sisaldab objektide massiivi, siis seda massiivi ei laiendata eraldi ridadeks. Selle asemel stringitakse kogu massiiv JSON-ina ja paigutatakse ühte lahtrisse.
- Sügavalt pesastatud objektid – kui teie JSON-is on objekte, millel on väga erinevad võtmed (nt ühel objektil on 50 võtit, teisel 100 mitteseotud võtit), loob lamedaks muutmise algoritm iga unikaalse võtmepolügooni jaoks veeru. See võib kiiresti ületada veergude piirangu.
- Null väärtused – kui mõnel objektil puudub võti, mis teistel on, jääb vastav lahter tühjaks. Kui võti on olemas, aga väärtus on
null, on tulemus sama – tühi lahter. - Maksimaalne faili suurus, ridade ja veergude arv – tööriist kontrollib neid piiranguid ja keeldub, kui need on ületatud. Faili suurus on kuni 8 MB. Ridade arv on kuni 10 000. Veergude arv on kuni 200.
KKK (Korduma Kippuvad Küsimused)
1. Kas tööriist säilitab valemid?
Ei. Tööriist käsitleb kõiki JSON-i väärtusi andmetena, mitte valemitena. Kui teil on string "=SUM(A1:A10)", ilmub see lahtrisse selle sõnasõnalise tekstina, mitte arvutatud summana.
2. Miks ei saa ma mitut töölehte? Tööriist toodab alati ainult ühe töölehe, nimega Sheet1.
3. Mis juhtub, kui JSON sisaldab pesastatud objekte?
Pesastatud objektide võtmed laiendatakse punktiga eraldatud teedeks. Näiteks {"a": {"b": 1}} annab veeru a.b. Kui pesastus on sügav, võib veerupealkiri muutuda pikaks.
4. Kuidas käsitletakse tühje väärtusi?
null-väärtused ja puuduvad võtmed teisendatakse tühjaks lahtriks XLSX-is.
5. Kas fail laaditakse serverisse? Ei. Kogu töötlus toimub brauseris. Faili ei saadeta kuhugi – see tagab privaatsuse ja turvalisuse.
6. Miks saan veateate "This JSON is invalid or not table‑shaped"? See tähendab, et sisend ei ole kehtiv JSON või ei ole tabelikujuline. Näiteks saba koma, ühekordsete jutumärkidega stringid või sulgemata sulg.