XLSX naar Parquet omzetten

Hier zet je XLSX naar Parquet 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 Parquet werkt anders dan XLSX. Het is dus niet het geleidelijke kwaliteitsverlies van een lossy codec: wat Parquet 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.

Een rekenblad slaat rijen op; Parquet slaat kolommen op

Elk ander doel voor een werkmap slaat het ene record na het andere op. Parquet slaat het ene veld na het andere op: alle vijftigduizend orderdata samen, dan alle steden, dan alle bedragen. Dat is geen opmaakvoorkeur, het is de hele reden dat het formaat bestaat.

Dat merk je zodra je bevraagt: een vraag die twee van de tweehonderd velden leest, raakt maar twee kolommen aan bytes in plaats van elke rij, en een kolom met herhaalde waarden comprimeert veel harder dan diezelfde waarden verspreid over rijen.

Hoe elke kolom haar type krijgt

Het type wordt afgeleid uit de waarden zelf, want een rekenblad draagt geen schema. Elke kolom wordt volledig doorgenomen: zijn alle niet-lege waarden booleans, dan wordt de kolom BOOLEAN; zijn het allemaal gehele getallen binnen 32-bits bereik, dan INT32; anders DOUBLE; al het overige wordt tekst.

De inferentie leest de hele kolom in plaats van te steekproeven, wat langzamer is en niet op die specifieke manier fout kan gaan — een lading die op een testbestand werkte en in productie faalt, komt meestal doordat de eerste duizend rijen schoon waren en rij veertigduizend niet.

Eén afwijkende waarde maakt de kolom bewust tekst

Een kolom postcodes die begint met vijfduizend numerieke waarden en dan SW1A 1AA bevat, wordt een tekstkolom, en de numerieke waarden komen ook als tekst mee.

Het verleidelijke alternatief — het type van de eerste rij nemen en alles wat daarvan afwijkt op null zetten — levert een bestand op dat geldig lijkt en stiekem waarden heeft verwijderd. Een tekstkolom is zichtbaar en in één expressie om te zetten naar het juiste type.

Waarom grote gehele getallen DOUBLE worden en geen INT64

Parquet kent een 64-bits geheel getal en dat wordt hier niet gebruikt. De waarden komen uit het rekenblad als JavaScript-getallen, met 53 bits precisie voor gehele getallen, dus alles al voorbij die grens is voordat de schrijver het ziet.

INT64 schrijven zou een exactheid beloven die het getal niet meer heeft. DOUBLE is de eerlijke verklaring van wat werkelijk bekend is. Heb je identificatienummers voorbij negen biljard, sla ze dan als tekst op in het rekenblad.

Het verschil in omvang, gemeten

Op een blad van vijftigduizend rijen en zes kolommen kwam het Parquet-bestand uit op ongeveer 301 KB, tegenover circa 4,3 MB als .xlsx en 1,8 MB als tabgescheiden tekst.

Het verschil is niet alleen compressie. Herhaalde waarden in een kolomopslag worden eenmaal bewaard en via kleine verwijzingen hergebruikt, wat verklaart waarom een kolom met stad- of productcodes bijna niets kost.

Datums komen als dagentellingen binnen, niet als tijdstempel

Wat een rekenblad in een datumcel opslaat is een getal plus een weergaveopmaak. De omzetting schrijft het getal, dus 1 januari 2024 wordt 45292, geteld vanaf eind december 1899, en de kolom wordt getypeerd als een geheel getal.

Er zit dus geen kalenderbetekenis in de uitvoer, en een queryengine behandelt de kolom als wat ze is: een geheel getal. De kalender toepassen is een simpele uitdrukking op het moment van bevragen.

Het resultaat lezen in DuckDB, pandas of Spark

Niets bijzonders is vereist. DuckDB leest het bestand rechtstreeks in een FROM-clausule, pandas leest het met één aanroep, en Spark behandelt het als een native tabelformaat. Het bestand begint en eindigt met de vier bytes PAR1.

Het eerste om te doen na het laden is de afgeleide typen bekijken in plaats van de eerste tien rijen. Een kolom die je numeriek verwachtte en als tekst terugkomt, vertelt iets waars over het rekenblad.

Eén blad, en wat te doen met de rest

De omzetting leest het eerste blad van de werkmap. Parquet houdt één tabel met één schema, dus een werkmap met meerdere bladen kan niet in één bestand worden weergegeven zonder een samenvoeging te verzinnen die niemand vroeg.

Zet voor een werkmap waar meerdere bladen ertoe doen elk blad apart om en laat de queryengine ze weer samenvoegen — precies waarvoor die engines zijn gebouwd.

Waar het bestand geschreven wordt, en wat het beperkt

Beide helften draaien in de browser: de rekenbladlezer en de Parquet-schrijver zijn bibliotheken die deze pagina op aanvraag laadt, en geen enkel verzoek draagt de werkmap ergens naartoe.

De limiet is geheugen, geen abonnementsniveau. Het blad wordt in rijen ingelezen, naar kolommen getransponeerd en weggeschreven, dus de hele tabel bestaat tegelijk; tientallen megabytes gaat probleemloos.

Zo zet je XLSX naar Parquet om

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

XLSX of Parquet: wat er verandert

XLSX vergeleken met Parquet
XLSXParquet
Volledige naamExcel-werkmapApache Parquet
Bestandsextensie.xlsx.parquet
Mediatypeapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.apache.parquet
CompressieZonder verlies — er gaat niets weg
Voor het eerst gepubliceerd20072013
Uitgegeven doorMicrosoftApache Software Foundation
SpecificatieECMA-376
LicentieOpen standaardOpen standaard
Stand van zakenActueelActueel
Opent in een browserGeen browserGeen browser
In plaats daarvan overwogenCSV, ODSCSV, JSON

Wat verloren gaat

Een spreadsheet wordt een vaste pagina. Formules zijn daarna geen formules meer maar alleen hun laatste uitkomst, en het afdrukbereik bepaalt de pagina-einden in plaats van het blad — daarom komt een breed XLSX-bestand in Parquet vaak over meerdere pagina's verdeeld aan.

Het resultaat openen

De gebruikelijke programma's overlappen niet: XLSX open je in Microsoft Excel, LibreOffice Calc en Google Sheets, Parquet in pandas, Apache Spark en DuckDB — 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, Parquet op archivering en gegevens tussen programma’s verplaatsen. 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.

Parquet komt van Apache Software Foundation en stamt uit 2013. pandas, Apache Spark en DuckDB lezen het formaat.

Van XLSX naar Parquet: 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 parquet-wasm, een WebAssembly-versie van de Apache Arrow-lezer; je browser haalt die één keer op en bewaart hem.

Is XLSX naar Parquet 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. parquet-wasm 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 Parquet?

XLSX en Parquet 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.

Wat gebeurt er met een XLSX-bestand als het Parquet wordt?

Een spreadsheet wordt een vaste pagina. Formules zijn daarna geen formules meer maar alleen hun laatste uitkomst, en het afdrukbereik bepaalt de pagina-einden in plaats van het blad — daarom komt een breed XLSX-bestand in Parquet vaak over meerdere pagina's verdeeld aan.

Meer over deze formaten