XLSB-formules en werkbladobjecten
De XLSX-werkmapfacade leest en schrijft een gevalideerde XLSB-subset met getypeerde waarden, gecachede gewone formules, namen, gangbare stijlen en gerepresenteerde werkbladobjecten; niet-gerepresenteerde status wordt geweigerd vóór bestemmingsuitvoer
Openen en opslaan
if Workbook.Open('values.xlsb') <> 1 then
raise Exception.Create('XLSB input is unsupported or invalid');
if Workbook.SaveAsChecked('values-copy.xlsb', xlsxExcelBinaryWorkbook) <> 1 then
raise Exception.Create('XLSB output is unsupported or failed');
Open detecteert het content- en geregistreerde type van het werkmaponderdeel; geslaagde binaire invoer zet SourceFormat=xlsxExcelBinaryWorkbook, terwijl de oorspronkelijke vier TXLSXFileFormat-ordinals onveranderd blijven en het nieuwe lid ordinal 4 heeft
De bestands- en stream-SaveAs- en SaveAsChecked-overloads accepteren het binaire formaat expliciet; standaardopslag kiest nog steeds het gewone Open XML-werkmapformaat, ongeacht de bestandsextensie
GetConversionReport(xlsConversionExcelBinaryWorkbook) inspecteert de actuele status zonder packed-cell-opslag uit te vouwen; niet-ondersteunde items blijven verplichte fouten, ook bij ongecontroleerd opslaan of AllowLossy=True
Ondersteunde status
- Gewone werkbladen, Unicode-namen en -strings, getallen, Boolean-waarden, lege en gestileerde lege cellen, en gewone representeerbare foutwaarden
- Gedeelde en inline stringinvoer, compacte native numerieke en kortecel-records, werkbladzichtbaarheid, de datasysteemvlag, gewone werkmap- en werkbladweergaven en selecties
- Gangbare lettertypen, patroonopvullingen, randen per celzijde, getalnotaties, celformaatverwijzingen, uitlijnings- en beveiligingsvlaggen, en gerepresenteerde RGB-, thema- en geïndexeerde kleuren
- Rijhoogtes, kolombreedtes, ondersteunde dimensievlaggen en paginamarges
- Gewone celformules met ondersteunde legacy-functietokens, scalaire operators, A1-verwijzingen, verwijzingen naar één blad in dezelfde werkmap en werkmap- of werkbladnamen, met numerieke, string-, Boolean- en gewone foutcaches
- Werkmapbrede en werkblad-scoped gedefinieerde namen, verborgen-naam-vlaggen en opmerkingen, samengevoegde cellen, gewone externe en interne hyperlinks, gesplitste of bevroren vensters en vensterselecties
- AutoFilter-bereiken, scalaire aangepaste vergelijkingen met een of twee AND/OR-criteria, en willekeurige geselecteerde-waarde-lijsten met een optionele lege selectie
- Gewone werkbladtabellen met identiteit, bereik, kop- en totalenrij-zichtbaarheid, kolomidentiteit en bijschriften, letterlijke totalenrij-labels, gerepresenteerde AutoFilter-criteria en ingebouwde tabelstijl-vlaggen
- Geconfigureerde ZIP-compressie en deterministische ZIP-tijdstempels via de bestaande werkmapopties
Het conversierapport dekt live-modelfeatures, en volledige pakketvalidatie blijft de eindcontrole voor ongeldige verwijzingen, misvormde records, onbekende attributen of niet-ondersteunde bewaarde inhoud
Binaire import behoudt het expliciete standaardlettertype van het bestand en ondersteunde ingebouwde getalnotaties, inclusief gestileerde lege cellen; landspecifieke getalnotaties vereisen een expliciete notatiecode zodat de lezer geen regionale opmaak gokt
Expliciete grenzen
Gedeelde formulerecords, array- en dynamische-array-eigendom, arrayconstanten en array-teruggevende functies, future-functies, gebruikersfuncties, externe-werkmap- en meerdere-blad-verwijzingen, VBA, externe datakoppelingen, draaitabellen en Slicers, grafieken en tekenobjecten, opmerkingen en rich text, validatie, voorwaardelijke opmaak en geavanceerde pagina- of extensiemetadata vallen buiten deze backend
Tabel-berekende kolommen, totalen-aggregatieformules, sorteerstatus, differentiële of aangepaste tabelopmaak, aan query's gebonden tabellen en XML-toewijzingen weigeren; kleur-, pictogram-, dynamische en datumgroepsfilters, getypeerde native Boolean-aangepaste criteria, numeriek ogende native string-aangepaste criteria en overschrijvingen van filterknop-zichtbaarheid weigeren ook
Geïmporteerde niet-aangepaste werkbladfiltercriteria worden behouden als RawXml; aangepaste vergelijkingen vullen de bestaande getypeerde criterium-eigenschappen, terwijl geselecteerde waarden en lege selectie een op XML gebaseerd criterium blijven in plaats van een nieuwe getypeerde waardelijst-API
Formuletokenconversie behoudt semantiek en verwijzingsvlaggen; hij kan formuletekst normaliseren met haakjes en gequote bladnamen, dus byte-voor-byte-tekstidentiteit wordt niet beloofd
Formule-uitvoer vereist een expliciete numerieke, string-, Boolean- of gewone foutcache; een ontbrekende cache weigert wanneer het opslagbeleid niet herberekent, inclusief xrmManual en een schone afhankelijkheidsgrafiek met xrmIfDirty; toepassingen kunnen Recalculate aanroepen of xrmAlways kiezen vóór het opslaan, en lege string, False en numerieke nul zijn geldige caches
Berekeningseigenschappen moeten ondersteunde standaardwaarden gebruiken; handmatige berekening, iteratie, verlaagde precisie, alternatieve referentiemodus, gedwongen of onvolledige berekening, expliciete threadconfiguratie en andere wezenlijke niet-standaardinstellingen weigeren
Berekeningsketens en binaire celindices zijn opnieuw gegenereerde metadata en worden niet over de pakketbrug gekopieerd; onbekende featurerecords of relaties blijven fouten in plaats van verzonnen Open XML-onderdelen te worden
Binaire invoer vereist eager laden van het volledige blad; MetadataOnly en een niet-lege SelectedSheets-lijst weigeren voordat het bestaande model wordt vervangen, omdat lazy loading een behouden geconverteerd archief zou vereisen
Garanties rond falen en eigendom
Binaire pakketten worden gevalideerd en geconverteerd voordat de gewone XML-parser de werkmap reset; niet-ondersteunde invoer, misvormde binaire inhoud, geweigerde leesmodi en conversieannulering behouden bestaande werkbladobjecten, bestandsnaam, bronformaat en bronarchiefbinding
Nadat gevalideerde binaire conversie in de bestaande XML-parser stapt, volgen late XML-parseer- of toepassingscallback-fouten de gewone XML-open-levenscyclus; de preflightgarantie belooft geen terugrol van willekeurige callback-schrijfacties
Opslaan zet het volledige binaire pakket in staging; bestandsuitvoer gebruikt een tijdelijk bestand in dezelfde map en één definitieve vervanging, en leesbare seekable stream-uitvoer houdt een byte-, grootte- en positie-snapshot vast voor terugrol na een commitfout
LastSaveUsedStreaming=False weerspiegelt volledige binaire staging, ook wanneer de tussenliggende XML-writer streamt; geheugen omvat geconverteerde onderdelen en het volledige pakket, dus deze backend is geen streaming writer met begrensd geheugen
Conversierapporten en preflight behouden packed-cell-opslag, inclusief een mengsel van packed waarden en gematerialiseerde formules; geslaagde opslag kan packed waarden uitvouwen via de bestaande stijlvoorbereiding en werkbladschrijver, dus rapportzuiverheid impliceert geen onveranderlijke of niet-materialiserende opslagbewerking
Geslaagde binaire bestandsopslag wist eerdere rauwe XML-bronbindingen; streamopslag behoudt bestandsnaamgedrag, en annulering wordt gecontroleerd vóór de bestemmingscommit
Pakketconversie-API's
procedure XlsbToOpenXml(Source: TZipArchive; Destination: TStream; CancelCheck: TXLSStreamCancelCheck = nil; EntryCompressionLevel: Integer = -1; EntryFixedDate: TDateTime = 0); procedure OpenXmlToXlsb(Source: TZipArchive; Destination: TStream; CancelCheck: TXLSStreamCancelCheck = nil; EntryCompressionLevel: Integer = -1; EntryFixedDate: TDateTime = 0); function XlsbStylesToXml(const Data: AnsiString): AnsiString; function XlsbStylesFromXml(const Data: AnsiString): AnsiString; function XlsbStringsToXml(const Data: AnsiString): AnsiString; function XlsbStringsFromXml(const Data: AnsiString): AnsiString;
TXlsbFormulaValidator.Create(WorkbookXml) valideert de werkmapnaamcontext en Validate(FormulaText, SheetIndex) valideert een formule zonder toegang tot werkbladcellen; SheetIndex is zero-based en de aanroeper is eigenaar van de validator
XlsbValidateTableXml(Data) en XlsbValidateAutoFilterXml(Data) valideren UTF-8-object-XML tegen dezelfde encodercontracten die de pakketuitvoer gebruikt; fouten geven de bestaande formaat- of niet-ondersteunde-feature-exceptions
Deze lxXlsb-API's behouden eigendom bij de aanroeper; pakketconversie valideert en staged alle onderdelen voordat Destination vanaf offset nul wordt vervangen, en kernonderdeel-bruggen gebruiken UTF-8-XML en rauwe binaire bytes
EXlsbUnsupported is afgeleid van EXlsbFormatError en onderscheidt verwachte subsetweigering van misvormde data; annulering geeft de gevestigde stream-annulerings-exception vóór de commit
Compressie accepteert -1 tot en met 9, en de vaste datum accepteert nul of een eindige, in DOS representeerbare datum van 1980 tot en met 2107; ongeldige opties weigeren vóór bestemmingswijzigingen