Cookies voor statistiek en advertenties
We gebruiken cookies voor statistiek en voor advertenties, allebei naar Google. Weigeren verandert niets aan wat je te zien krijgt.Lees de privacypagina
XLSX
Het Excel-formaat sinds 2007. Meerdere bladen, formules en opmaak.
XLSX
XLSX is een container: een omhulsel voor stromen die door iets anders zijn gecodeerd. Het wordt gebruikt voor bewerken.
De extensie is .xlsx en de volledige naam Excel Workbook. Allebei zeggen ze minder dan wat het bestand kan bevatten, en daar gaat de rest van deze pagina over.
Microsoft bracht het in 2007 uit. De specificatie is ECMA-376.
De leeftijd is om een praktische reden interessant: hoe ouder een formaat, hoe meer programma’s de tijd hebben gehad om het te leren.
Ze is volledig gepubliceerd, dus wie het formaat wil uitvoeren kan dat uit het document doen in plaats van door te kijken hoe anderen het doen. Daarom duikt het in zo veel programma’s op, en daarom gaan bestanden van twintig jaar geleden nog steeds open. Openbaar is niet hetzelfde als royaltyvrij: waar een formaat een codec omhult, is de octrooilicentie een aparte vraag waarop de standaard geen antwoord geeft.
Een XLSX-bestand is niet tot één pagina beperkt, en dat telt bij het converteren naar iets dat dat wel is: één omzetting levert één bestand op met daarin één pagina — de eerste, tenzij de omzetter je laat kiezen welke.
XLSX kan geen uitvoerbare code meedragen. Daarom laten mailservers en documentportalen het door waar ze zijn macro-tweelingbroer tegenhouden.
XLSX bevat een rekenblad: cellen, formules en de bladen eromheen.
Daaruit volgt hoe het converteert: een rekenblad wordt een afdrukbereik, en waar de kolommen breken is een beslissing die iemand moet nemen.
XLSX brengt optionele versleuteling mee.
Een versleuteld bestand moet worden ontgrendeld voordat iets het kan converteren, hier en overal elders. Een wachtwoord is niets waar een omzetter omheen kan, en aan een die dat wel beweert zou je het bestand al helemaal niet moeten geven.
Microsoft Excel, LibreOffice Calc en Google Sheets lezen het, en de meeste programma’s van dezelfde soort ook.
Als een bestand niet opengaat ligt het zelden aan het formaat — vaker is het programma ouder dan het formaat. Converteren naar iets ouders is de betrouwbare weg eromheen, en daarvoor is de rest van deze site bedoeld.
Geen enkele browser leest het.
Dat is veruit de meest voorkomende reden om het te converteren: niet dat het formaat slecht is, maar dat de plek waar je het bestand wilt tonen het niet kan lezen.
XLSX is bedoeld om te openen en te wijzigen. Houd het bestand in dit formaat zolang het werk loopt, en exporteer eruit wanneer er een afgeronde versie nodig is.
Hernoem een .xlsx naar .zip en open het. Erin zit een kleine mappenstructuur: één XML-bestand per werkblad, een gedeelde tabel van elke afzonderlijke string in het werkboek, een stijlenbestand, en een map met documenteigenschappen. Elke afbeelding of elk ingesloten object staat daar als apart bestand.
Dat is geen curiositeit. Het is waarom een corrupt werkboek soms gered kan worden door het archief te openen en de blad-XML eruit te trekken, waarom bestandsgroottes zich gedragen zoals ze doen, en waarom een werkboek dingen kan dragen waarvan niemand zich herinnert ze erin gezet te hebben. Het format is inspecteerbaar met gereedschap dat iedereen al heeft.
XLSX verving het binaire XLS-format bij Office 2007. Het oude format was een binair compound-document dat alleen Microsoft volledig begreep; het nieuwe is gedocumenteerd, en dat is waarom LibreOffice, Google Sheets, Numbers en tientallen bibliotheken het betrouwbaar kunnen lezen waar XLS-ondersteuning altijd deels giswerk was.
De limieten verschoven tegelijkertijd en zijn het weten waard, want mensen lopen er nog steeds tegenaan: een werkblad heeft ruimte voor 1.048.576 rijen en 16.384 kolommen, tegenover 65.536 en 256 daarvoor. Een export die precies bij 65.536 rijen afgekapt wordt, is een tool die het oude format schrijft, geen toeval.
Elke formulecel bevat twee dingen: de formule als tekst, en het laatst berekende resultaat. Dat is waarom een werkboek meteen waarden toont bij openen in plaats van eerst honderdduizend cellen te herberekenen, en waarom een tool die XLSX leest zonder rekenmachine toch de juiste getallen kan tonen.
Het betekent ook dat de gecachte waarde verouderd kan zijn. Een bestand geschreven door een programma dat niet berekent — veel exportbibliotheken doen dat niet — bevat formules zonder resultaten, en elke cel leest als nul of leeg tot Excel het opent. Oogt een gegenereerd werkboek leeg waar er totalen zouden moeten staan, dan is dit meestal de oorzaak.
Getallen worden opgeslagen als drijvendekommagetallen met dubbele precisie, wat ongeveer vijftien significante cijfers biedt. Een zestien-cijferig creditcardnummer, een lange orderreferentie of een burgerservicenummer verliest zijn laatste cijfers — permanent, in het bestand, niet alleen in de weergave.
De verdediging is de kolom tot tekst maken voordat de data binnenkomt, zodat de cijfers als tekens worden opgeslagen in plaats van als hoeveelheid. Het is hetzelfde onderliggende probleem als verdwijnende voorloopnullen bij postcodes, en dezelfde regel geldt: een identificatienummer is geen getal alleen omdat het uit cijfers bestaat.
De documenteigenschappen dragen de auteur, de laatste persoon die opsloeg, de bedrijfsnaam uit de Office-installatie en de aanmaak- en wijzigingsdata. Verborgen rijen, verborgen kolommen en verborgen werkbladen zijn verborgen, niet afwezig — de data staat in de XML en iedereen kan die lezen.
Externe koppelingen zijn de scherpste rand. Een formule die naar een ander werkboek verwijst, bewaart het volledige pad waar hij vandaan gekoppeld was, en dat pad noemt vaak een netwerkschijf, een klant, of een mapstructuur die het bedrijf verraadt. De documenteigenschappen wissen verwijdert ze niet; ze zitten in het blad, niet in de metadata.
Dit is een bewuste en een van de betere beslissingen van het format. Een bestand dat eindigt op .xlsx kan geen macrocode bevatten; een werkboek met macro’s moet opgeslagen worden als .xlsm, wat zichzelf aankondigt in de extensie. Een XLSM hernoemen naar XLSX smokkelt de code niet mee — het werkboek raakt hem simpelweg kwijt.
Dat geeft een nuttige regel voor alles dat per e-mail binnenkomt: een gewone .xlsx kan geen code uitvoeren bij het openen. Het risico zit bij .xlsm en het oudere .xls, die dat allebei wel kunnen, en geen van beide zegt dat zo duidelijk.
Alles in het archief is gecomprimeerd, en spreadsheet-XML is buitengewoon repetitief, dus is de verhouding ongewoon goed. Een werkboek van honderdduizend rijen kan op een paar megabyte uitkomen. Herhaalde tekst wordt eenmaal opgeslagen in een gedeelde tabel en per nummer aangehaald, wat waarom een kolom met dezelfde twintig categorienamen bijna niets kost.
Wat een werkboek groot maakt, is meestal niet de data: ingesloten afbeeldingen, opmaak toegepast op hele bladen in plaats van het gebruikte bereik, en draaitabelcaches, die een tweede kopie van de brondata bewaren zodat de draaitabel herschikt kan worden zonder die brondata. Een bestand dat mysterieus vijftig megabyte is, heeft meestal een van die drie.
Voor een mens is XLSX uitstekend: types zijn vastgelegd, datums blijven datums, lange getallen behouden hun opmaak, en het bestand draagt zijn eigen structuur zodat er bij openen niets geraden hoeft te worden. Een spreadsheet naar een collega sturen, dit is elke keer de juiste keuze boven CSV.
Voor een programma is het zwaarder dan de klus meestal vraagt. Het lezen betekent een archief unzippen en verschillende XML-documenten parsen met een bibliotheek, waar CSV geen bibliotheek nodig heeft en streamt uit een bestand groter dan het geheugen. Dat is de eerlijke verdeling: XLSX wanneer een mens het opent, CSV wanneer een machine het leest.
De meest voorkomende oorzaak is geen schade maar een download die te vroeg stopte of herschreven werd door een e-mailgateway. Wil het archief zelf niet unzippen, dan is het bestand afgekapt en helpt geen reparatie — haal het opnieuw op bij de bron.
Opent het archief wel maar weigert Excel het werkboek, dan is de blad-XML meestal intact en zit de schade in een van de kleinere onderdelen eromheen. Excels eigen Openen en herstellen redt de meeste daarvan, en waar dat niet lukt, haalt de blad-XML met de hand uit het archief trekken op zijn minst de data eruit.
| Extensie | .xlsx |
|---|---|
| Mediatype | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
| Uitgegeven door | Microsoft |
| Voor het eerst gepubliceerd | 2007 |
| Specificatie | ECMA-376 |