XLSX ir CSV: struktūrinis atotrūkis
XLSX failas iš tikrųjų yra suspaustas XML darbaknygė. Viename faile gali glūdėti kelios lentelės (lapai), kiekviena su savo langelių tipais (skaičius, data, valiuta, loginė reikšmė), formulėmis, spalvomis, šriftais, sujungtais langeliais ir net maketais. CSV – tai paprasčiausias tekstinis failas: kiekviena eilutė yra atskirta naujos eilutės simboliu, o stulpeliai – pasirinktu skyrikliu (kableliu, kabliataškiu arba tabuliacija). Jokia formatavimo informacija, jokios formulės, jokie duomenų tipai – tik raidžių ir skaičių seka.
Ši priemonė daro viena: paima pirmąjį XLSX darbaknygės lapą, nuskaito kiekvieną langelį kaip rodomąją reikšmę (t. y. paskutinę išsaugotą formulės reikšmę, be jokio perskaičiavimo) ir surašo jas į CSV failą. Tai, kas XLSX buvo struktūra ir turtingumas, tampa plokščiu, vienmačiu tekstu. Šis konvertavimas yra praradiminis – tai nėra trūkumas, o savybė, kylanti iš pačių formatų prigimties. Jei jums reikia išsaugoti formules, kelis lapus ar langelių formatavimą, CSV nėra tinkamas formatas.
Kas tiksliai prarandama konvertuojant
Formulės. XLSX langelyje gali būti formulė, pvz., =SUM(A1:A10). CSV nežino, kas yra formulė. Priemonė nuskaito paskutinę išsaugotą rodomąją reikšmę – t. y. skaičių, kurį Excel apskaičiavo ir išsaugojo failo atidarymo metu. Jei failas nebuvo išsaugotas perskaičiavus, reikšmė gali būti pasenusi. Formulės logikos CSV nėra.
Daugialapis organizavimas. XLSX gali turėti 10, 20 ar 100 lapų. Ši priemonė apdoroja tik pirmąjį. Visi kiti lapai ignoruojami. Jei jūsų duomenys išsibarstę keliuose lapuose, prieš konvertuodami turite juos sujungti į vieną lentelę (pvz., naudodami Excel funkcijas ar rankinį kopijavimą). Arba konvertuokite kiekvieną lapą atskirai.
Ląstelių formatavimas. Spalvos, šriftai, pabraukimai, rėmeliai, užpildai – visa tai dingsta. CSV yra tik tekstas ir skyrikliai. Nėra stulpelių pločių, nėra sąlyginio formatavimo. Jei jūsų XLSX lentelė naudoja spalvas duomenims koduoti (pvz., raudona – klaida), ši informacija CSV neperduodama. Reikia pridėti atskirą stulpelį, pvz., „Būsena“, kuriame būtų tekstinė reikšmė.
Duomenų tipai. Number, date, currency, boolean – CSV visus juos traktuoja kaip tekstą. Data, kuri XLSX buvo saugoma kaip serijos numeris (pvz., 45000), CSV taps skaičiumi, nebent prieš konvertavimą suformatuosite langelius kaip tekstą. Tai dažna klaida.
Sujungti langeliai. Jei XLSX lentelėje yra sujungtų langelių (pvz., antraštė, apimanti kelis stulpelius), CSV atkurs tik tą reikšmę pirmajame stulpelyje; kiti stulpeliai bus tušti. Tai gali sugadinti lentelės struktūrą. Prieš konvertuodami sujungtus langelius atjunkite („Unmerge cells“).
Pirmieji nuliai. Tai viena dažniausių problemų. Jei langelis saugo skaičių 00123, o langelio formatas yra „Bendrasis“ arba „Skaičius“, Excel išsaugo reikšmę kaip 123, o ne 00123. CSV gausite 123. Norint išsaugoti pirmuosius nulius, langelis turi būti suformatuotas kaip „Tekstas“ dar prieš įrašant duomenis. Jei failą gavote iš kito asmens, patikrinkite, ar pirmieji nuliai nėra prarasti jau šaltinyje.
Ribinės situacijos: kai CSV tampa netikėtai sudėtingas
Kableliai tekste. Jei langelyje yra kablelis, o jūs pasirinkote kablelį kaip CSV skyriklį, ši priemonė automatiškai apgaubia visą langelio reikšmę kabutėmis („quoting“). Pavyzdžiui, langelis „Pardavimai, 2024 m.“ taps "Pardavimai, 2024 m.". Dauguma CSV skaitytuvų (Excel, duomenų bazių importavimo priemonės) šį kabutes atpažįsta. Bet ne visi – kai kurios senos programos gali susipainioti.
Naujos eilutės langelyje. Excel leidžia langelio viduje įvesti naują eilutę (Alt+Enter). CSV tokiais atvejais taip pat apgaubia reikšmę kabutėmis. Jei jūsų tikslas – kiekvieną langelį talpinti vienoje CSV eilutėje, prieš konvertuodami pašalinkite vidines naujas eilutes (pakeiskite jas tarpu arba brūkšniu).
Per dideli failai. Priemonė turi dydžio apribojimus. Jei failas viršija leistiną dydį, pamatysite klaidą: "This file is too large. Use a file under ‹max›." Konkreti ‹max› reikšmė priklauso nuo priemonės nustatymų. Jei jūsų XLSX turi daugiau nei leistiną eilučių ar stulpelių skaičių, taip pat gausite atitinkamą pranešimą: "This table has more than ‹max› rows." arba "This table has more than ‹max› columns." Tokiu atveju teks suskaidyti failą į mažesnes dalis.
Tuščios lentelės. Jei pirmasis lapas neturi nė vienos duomenų eilutės (pvz., tik tušti langeliai), priemonė grąžins klaidą: "This file has no table rows." Įsitikinkite, kad lentelė prasideda nuo pirmos eilutės ir stulpelio A.
Failas neatsidaro. Jei XLSX yra sugadintas, užšifruotas arba sukurtas senesne Excel versija su neįprasta struktūra, gausite: "This Excel file could not be opened." Pabandykite išsaugoti failą iš naujo naudodami Excel funkciją „Save As“ XLSX formatu.
Kodėl tik pirmasis lapas ir kaip ruošti daugialapius failus
Priemonė sąmoningai apribota iki pirmojo lapo. CSV neturi sąvokos „lapai“ – tai viena plokščia lentelė. Jei jūsų XLSX turi kelis lapus su skirtingais duomenų rinkiniais, turite nuspręsti, ką daryti:
-
Sujunkite lapus į vieną. Jei lapai turi identišką stulpelių struktūrą (pvz., Sausio_pardavimai, Vasario_pardavimai), nukopijuokite juos vieną po kito į pirmąjį lapą. Galite naudoti Excel funkciją
POWER QUERY(„Append Queries“) arba tiesiog rankiniu būdu kopijuoti. -
Konvertuokite kiekvieną lapą atskirai. Jei lapų struktūra skiriasi, geriau kiekvieną lapą išsaugokite kaip atskirą XLSX failą (pasinaudodami Excel „Move or Copy“) ir konvertuokite kiekvieną atskirai.
-
Įtraukite lapo pavadinimo stulpelį. Jei norite išlaikyti informaciją, iš kurio lapo duomenys kilę, prieš konvertavimą pridėkite papildomą stulpelį, kuriame būtų lapo pavadinimas. Tada sujunkite lapus.
Saugumas naršyklėje: niekas neišeina iš jūsų kompiuterio
Visas konvertavimas vyksta jūsų naršyklėje. Failas neįkeliamas į jokį serverį. Tai reiškia, kad net ir konfidencialūs duomenys (klientų sąrašai, finansinės ataskaitos, asmens duomenys) lieka jūsų mašinoje. Vienintelis duomenų judėjimas yra iš jūsų disko į naršyklės atmintį, o tada – iš naršyklės atgal į diską kaip CSV failas.
Tai iš esmės skiriasi nuo daugelio internetinių konverterių, kurie siunčia failą į serverį, jį apdoroja ir siunčia atgal. Nors tokios paslaugos dažnai žada duomenų ištrinimą po apdorojimo, niekada negalite būti visiškai tikri. Ši priemonė pašalina tą riziką.
Ką tai reiškia praktiškai: galite drąsiai konvertuoti net ir itin jautrius failus. Tačiau atminkite, kad jūsų naršyklė vis tiek turi apribojimus – labai dideli failai gali sukelti atminties trūkumą arba ilgą apdorojimo laiką. Jei gaunate klaidą "This conversion is taking too long. Try a smaller file.", tai reiškia, kad naršyklė negali susidoroti su duomenų kiekiu. Bandykite mažesnę failo dalį.
Kaip pasirinkti tinkamą skyriklį
Priemonė leidžia pasirinkti tris skyriklius: kablelį (,), kabliataškį (;) ir tabuliaciją (\t). Kurį naudoti?
-
Kablelis (
,) – standartinis CSV. Dauguma šiuolaikinių duomenų bazių, programavimo kalbų (Python, R, SQL) ir BI įrankių (Tableau, Power BI) pagal nutylėjimą tikisi kablelio kaip skyriklio. Jei nesate tikri, rinkitės kablelį. -
Kabliataškis (
;) – Europos lokalės variantas. Kai kuriose šalyse (pvz., Vokietijoje, Prancūzijoje, Lietuvoje) kablelis naudojamas kaip dešimtainis skyriklis, todėl CSV failuose vietoj kablelio naudojamas kabliataškis, kad nebūtų konfliktų. Jei importuosite failą į Excel, o dešimtainiai ženklai yra kableliai, rinkitės kabliataškį. Excel automatiškai atpažins šį skyriklį kai kuriose lokalėse. -
Tabuliacija (
\t) – TSV formatas. Naudinga, kai jūsų duomenyse gausu kablelių ir kabliataškių (pvz., teksto laukai su daugybe skyrybos ženklų). Tabuliacija retai pasitaiko tekste, todėl konfliktų tikimybė mažesnė. Kai kurios senesnės sistemos (pvz., mainframe duomenų perdavimui) naudoja TSV.
Rekomendacija: prieš konvertuodami visą failą, patikrinkite duomenys ar yra kablelių, kabliataškių ar naujų eilučių. Jei taip, apsvarstykite tabuliaciją. Jei ne, kablelis yra saugiausias pasirinkimas.
D.U.K.
1. Ką daryti, jei pirmajame lape nėra duomenų? Perkelkite duomenis į pirmąjį lapą arba konvertuokite kitą lapą atskirai. Priemonė apdoroja tik pirmąjį lapą. Jei pirmas lapas tuščias, gausite klaidą "This file has no table rows."
2. Ar galiu konvertuoti XLS (senąjį) failą? Ne. Priemonė priima tik XLSX, CSV ir JSON failus. Jei turite XLS failą, pirmiausia atidarykite jį naujesnėje Excel versijoje ir išsaugokite kaip XLSX („Save As“ -> „Excel Workbook (.xlsx)“).
3. Kodėl data CSV atrodo kaip skaičius?
Excel datos saugomos kaip serijos numeriai. Jei langelio formatas nėra „Data“, o „Bendrasis“ arba „Skaičius“, priemonė nuskaito tą skaičių, o ne datą. Prieš konvertuodami suformatuokite datų stulpelius kaip tekstą naudodami Excel funkciją TEXT(langelis, "mm/dd/yyyy") arba tiesiog pakeiskite langelio formatą į „Tekstas“.
4. Ar priemonė išlaiko stulpelių pavadinimus? Taip, jei stulpelių pavadinimai yra pirmoje lentelės eilutėje, jie bus įtraukti į CSV failą kaip pirmoji eilutė. Jei jūsų XLSX lentelė prasideda antra eilute, pirmoji eilutė bus tuščia arba praleista. Geriau prieš konvertuojant įsitikinkite, kad antraštė yra pačioje lentelės pradžioje.
5. Ką daryti, jei CSV failas turi per daug tuščių langelių? XLSX tušti langeliai CSV tampa tuščiais laukais. Tai normalu. Tačiau jei jūsų lentelėje yra sujungtų langelių, po atjungimo vieni langeliai liks tušti. Prieš konvertuodami atjunkite sujungtus langelius ir užpildykite tuščias vietas reikiamomis reikšmėmis.
6. Ar galiu konvertuoti failą su daugybe stulpelių, pvz., 100? Taip, bet priemonė turi stulpelių skaičiaus apribojimą. Jei jūsų lentelė turi daugiau nei leistina stulpelių, gausite klaidą "This table has more than ‹max› columns." Reikalui esant, suskaidykite lentelę į mažesnes dalis.