XLSB-formler og regnearksobjekter
XLSX-projektmappens facade læser og skriver en valideret XLSB-delmængde med typede værdier, almindelige cachede formler, navne, almindelige formater og repræsenterede regnearksobjekter; urepræsenteret tilstand afvises før destinationsoutput
Åbn og gem
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 detekterer projektmappedelens indhold og registrerede type; vellykket binær input sætter SourceFormat=xlsxExcelBinaryWorkbook, mens de oprindelige fire TXLSXFileFormat-ordinaler forbliver uændrede, og det nye medlem har ordinal 4
Fil- og stream-SaveAs- og SaveAsChecked-overloaderne accepterer det binære format eksplicit; standardgemning vælger stadig det almindelige Open XML-projektmappeformat uanset filendelsen
GetConversionReport(xlsConversionExcelBinaryWorkbook) inspicerer den aktuelle tilstand uden at udvide pakket cellelagring; ikke-understøttede indgange forbliver obligatoriske fejl selv ved ukontrolleret gemning eller AllowLossy=True
Understøttet tilstand
- Almindelige regneark, Unicode-navne og strenge, tal, booleske værdier, blanke og formattede blanke celler samt almindelige repræsenterbare fejlværdier
- Delte og inline strenginput, kompakte native numeriske og short-cell-records, regnearksvisibilitet, datosystemflaget samt almindelige projektmappe- og regnearksvisninger og -selektioner
- Almindelige fonte, mønsterfyld, kantkanter, talformater, celleformatreferencer, justerings- og beskyttelsesflag samt repræsenterede RGB-, tema- og indekserede farver
- Rækkehøjder, kolonnebredder, understøttede dimensionsflag og sidemargener
- Almindelige celleformler med understøttede legacy funktionstokens, skalare operatorer, A1-referencer, samme-projektmappe enkeltarksreferencer og projektmappe- eller regnearksnavne med numeriske, streng-, booleske og almindelige fejl-caches
- Globale og regnearksscopede definerede navne, skjult navn-flag og kommentarer, flettede celler, almindelige eksterne og interne hyperlinks samt split- eller frosne panes og panelselektioner
- AutoFilter-områder, skalare brugerdefinerede sammenligninger med én eller to AND/OR-betingelser samt vilkårlige valgte værdilister med en valgfri tom selektion
- Almindelige regnearkstabeller med identitet, område, overskrifts- og totalrække-synlighed, kolonneidentitet og captions, literale totalrække-etiketter, repræsenterede AutoFilter-kriterier og indbyggede tabelstil-flag
- Konfigureret ZIP-komprimering og deterministiske ZIP-tidsstempler gennem de eksisterende projektmappeindstillinger
Konverteringsrapporten dækker live-model-funktioner, og komplet pakkevalidering forbliver den endelige port for ugyldige referencer, misdannede records, ukendte attributter eller ikke-understøttet tilbageholdt indhold
Binær import beholder filens eksplicitte standardfont og understøttede indbyggede talformater, inklusive formattede blanke celler; lokalaflængige talformater kræver en eksplicit formatkode, så readeren ikke gætter regional formatering
Eksplicitte grænser
Delte formel-records, array- og dynamisk array-ejerskab, arraykonstanter og array-returnerende funktioner, future functions, brugerdefinerede funktioner, ekstern projektmappe- og multiarksreferencer, VBA, eksterne dataforbindelser, pivottabeller og Slicers, diagrammer og tegninger, kommentarer og rich text, validering, betinget formatering samt avanceret side- eller udvidelsesmetadata forbliver uden for denne backend
Tabel-beregnede kolonner, total-aggregeringsformler, sorteringstilstand, differential eller brugerdefineret tabelformatering, forespørgselsbundne tabeller og XML-mappings afviser; farve-, ikon-, dynamiske og datogruppefiltre, typede native booleske brugerdefinerede kriterier, numerisk-udseende native streng-brugerdefinerede kriterier og filterknap-synlighedsoverstyringer afviser også
Importerede ikke-brugerdefinerede regnearksfilterkriterier tilbageholdes som RawXml; brugerdefinerede sammenligninger udfylder de eksisterende typede kriterieegenskaber, mens valgte værdier og tom selektion forbliver et XML-bagendet kriterium frem for en ny typet værdiliste-API
Formeltoken-konvertering bevarer semantik og referenceflag; den kan normalisere formeltekst med parenteser og citerede arknavne, så byte-for-byte tekstidentitet ikke loves
Formeloutput kræver en eksplicit numerisk, streng-, boolesk eller almindelig fejlcache; en manglende cache afviser, når gemmepolitikken ikke genberegnar, inklusive xrmManual og en ren afhængighedsgraf med xrmIfDirty; applikationer kan kalde Recalculate eller vælge xrmAlways før gemning, og tom streng, False og numerisk nul er gyldige caches
Beregningsegenskaber skal bruge understøttede standarder; manuel beregning, iteration, reduceret præcision, alternativ referencetilstand, gennemtvunget eller ufuldstændig beregning, eksplicit trådkonfiguration og andre meningsfulde ikke-standardindstillinger afviser
Beregningskæder og binære celleindekser er regenereret metadata og kopieres ikke på tværs af pakkebroen; ukendte funktionsrecords eller relationer forbliver fejl i stedet for at blive fabrikerede Open XML-dele
Binær input kræver ivrig fuld-ark-indlæsning; MetadataOnly og en ikke-tom SelectedSheets-liste afviser, før den eksisterende model erstattes, fordi lazy loading ville kræve et tilbageholdt konverteret arkiv
Fejl- og ejerskabsgarantier
Binære pakker valideres og konverteres, før den almindelige XML-parser nulstiller projektmappen; ikke-understøttet input, misdannet binært indhold, afviste læsetilstande og konverteringsannullering bevarer eksisterende regnearksobjekter, filnavn, kildeformat og kildearkiv-binding
Efter at valideret binær konvertering går ind i den eksisterende XML-parser, følger sene XML-parsings- eller applikationscallback-fejl den almindelige XML-åbningslivscyklus; preflight-garantien lover ikke rollback af vilkårlige callback-skrivninger
Gemning klarer hele den binære pakke; filoutput bruger en søskende midlertidig fil og én endelig erstatning, og læsbar søgbar stream-output beholder et byte-, størrelses- og positions-snapshot til rollback efter en commit-fejl
LastSaveUsedStreaming=False afspejler komplet binær klargøring, selv når den mellemliggende XML-writer streamer; hukommelsen inkluderer konverterede dele og den komplette pakke, så denne backend er ikke en begrænset hukommelse streaming-writer
Konverteringsrapporter og preflight beholder pakket cellelagring, inklusive en blanding af pakkede værdier og materialiserede formler; vellykket gemning kan udvide pakkede værdier gennem den eksisterende stilforberedelse og regnearks-writer, så rapportens renhed indebærer ikke en uforanderlig eller ikke-materialiserende gemmeoperation
Vellykket binær filgemning rydder tidligere rå XML-kildebindinger; stream-gemning beholder filnavnsadfærden, og annullering tjekkes før destinationscommit
Pakkekonverterings-API'er
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) validerer projektmappens navnekontekst, og Validate(FormulaText, SheetIndex) validerer en formel uden regnearkscelleadgang; SheetIndex er nulbaseret, og kalderen ejer validatoren
XlsbValidateTableXml(Data) og XlsbValidateAutoFilterXml(Data) validerer UTF-8 objekt-XML mod de samme encoder-kontrakter, som pakkeoutput bruger; fejl udløser de eksisterende format- eller ikke-understøttet-funktion-exceptions
Disse lxXlsb-API'er beholder kalderens ejerskab; pakkekonvertering validerer og klarer alle dele, før Destination erstattes fra offset nul, og kerndel-broer bruger UTF-8-XML og rå binære bytes
EXlsbUnsupported stammer fra EXlsbFormatError og adskiller forventet delmængdeafvisning fra misdannede data; annullering udløser den etablerede stream-annulleringsexception før commit
Komprimering accepterer -1 til 9, og den faste dato accepterer nul eller en finit DOS-repræsenterbar dato fra 1980 til 2107; ugyldige indstillinger afviser før destinationsændringer