XLSB-formler och kalkylbladsobjekt
XLSX-arbetsboksfasaden läser och skriver en validerad XLSB-delmängd med typade värden, vanliga cachade formler, namn, vanliga format och representerade kalkylbladsobjekt; tillstånd som inte kan representeras avslås innan målutdata
Öppna och spara
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 upptäcker arbetsboksdelens innehåll och registrerade typ; lyckad binär indata sätter SourceFormat=xlsxExcelBinaryWorkbook, medan de ursprungliga fyra TXLSXFileFormat-ordnalen förblir oförändrade och den nya medlemmen har ordinal 4
Fil- och strömöverladdningarna SaveAs och SaveAsChecked accepterar det binära formatet uttryckligen; standardsparandet väljer fortfarande det vanliga Open XML-arbetsboksformatet oavsett filändelsen
GetConversionReport(xlsConversionExcelBinaryWorkbook) granskar aktuellt tillstånd utan att expandera packad celllagring; poster som inte stöds förblir obligatoriska fel även för okontrollerad sparning eller AllowLossy=True
Stött tillstånd
- Vanliga kalkylblad, Unicode-namn och -strängar, tal, Boolean-värden, tomma och formaterade tomma celler samt vanliga representerbara felvärden
- Delade och inline-strängindata, kompakta inbyggda tal- och kortcellsposter, kalkylbladssynlighet, datasystemflaggan samt vanliga vyer och val för arbetsbok och kalkylblad
- Vanliga typsnitt, mönsterfyllnader, kantlinjer, talformat, cellformatreferenser, justerings- och skyddsflaggor samt representerade RGB-, tema- och indexfärger
- Radhöjder, kolumnbredder, stödda dimensionsflaggor och sidmarginaler
- Vanliga cellformler med stödda äldre funktionstecken, skalära operatorer, A1-referenser, referenser med ett enda blad i samma arbetsbok samt arbetsboks- eller kalkylbladsnamn, med numeriska, sträng-, Boolean- och vanliga felcacher
- Globala och kalkylbladsomfattande definierade namn, flaggor och kommentarer för dolda namn, sammanslagna celler, vanliga externa och interna hyperlänkar, delade eller frysta rutor samt rutval
- AutoFilter-områden, skalära anpassade jämförelser med ett eller två AND/OR-kriterier samt godtyckliga listor med valda värden och ett valfritt tomval
- Vanliga kalkylbladstabeller med identitet, område, synlighet för rubrik- och summorad, kolumnidentitet och bildtexter, literala etiketter för summoraden, representerade AutoFilter-kriterier och flaggor för inbyggd tabellstil
- Konfigurerad ZIP-komprimering och deterministiska ZIP-tidsstämplar via de befintliga arbetsboksalternativen
Konverteringsrapporten täcker funktioner i den levande modellen, och komplett paketvalidering förblir den sista grinden för ogiltiga referenser, felformade poster, okända attribut eller behållet innehåll som inte stöds
Binär import behåller filens uttryckliga standardtypsnitt och stödda inbyggda talformat, inklusive formaterade tomma celler; lokalberoende talformat kräver en uttrycklig formatkod så att läsaren inte gissar regional formatering
Uttryckliga gränser
Poster för delade formler, matris- och dynamiskt matrisägarskap, matriskonstanter och matrisreturnerande funktioner, framtida funktioner, användardefinierade funktioner, externa arbetsboks- och flerbladsreferenser, VBA, externa dataanslutningar, pivottabeller och Slicers, diagram och ritningar, kommentarer och rich text, validering, villkorsformatering samt avancerad sid- eller tilläggsmetadata ligger utanför den här backenden
Beräknade tabellkolumner, aggregeringsformler för summeraden, sorteringstillstånd, differentiell eller anpassad tabellformatering, frågebundna tabeller och XML-mappningar avslås; färg-, ikon-, dynamiska och datumgruppsfilter, typade inbyggda anpassade Boolean-kriterier, inbyggda strängkriterier med numeriskt utseende och överskrivningar av filterknappens synlighet avslås också
Importerade icke-anpassade kalkylbladsfilterkriterier behålls som RawXml; anpassade jämförelser fyller de befintliga typade kriterieegenskaperna, medan valda värden och tomval förblir ett XML-baserat kriterium i stället för ett nytt typat API för värdelistor
Konverteringen av formeltecken bevarar semantik och referensflaggor; den kan normalisera formulertext med parenteser och citerade bladnamn, så byte-för-byte-textidentitet lovas inte
Formelutdata kräver en uttrycklig numerisk, sträng-, Boolean- eller vanlig felcache; en saknad cache avslås när sparandepolicyn inte kommer att omberäkna, inklusive xrmManual och en ren beroendegraf med xrmIfDirty; program kan anropa Recalculate eller välja xrmAlways före sparandet, och tom sträng, False samt numerisk nolla är giltiga cacher
Beräkningsegenskaperna måste använda stödda standardvärden; manuell beräkning, iteration, reducerad precision, alternativt referensläge, tvingad eller ofullständig beräkning, uttrycklig trådkonfiguration och andra meningsfulla icke-standardinställningar avslås
Beräkningskedjor och binära cellindex är omgenererad metadata och kopieras inte över paketbryggan; okända funktionsposter eller relationer förblir fel i stället för att bli fabricerade Open XML-delar
Binär indata kräver ivrig inläsning av hela bladet; MetadataOnly och en icke-tom SelectedSheets-lista avslås innan den befintliga modellen ersätts, eftersom lat inläsning skulle kräva ett behållet konverterat arkiv
Fel- och ägarskapsgarantier
Binära paket valideras och konverteras innan den vanliga XML-parsaren återställer arbetsboken; indata som inte stöds, felformat binärt innehåll, avslagna läslägen och konverteringsavbrott bevarar befintliga kalkylbladsobjekt, filnamn, källformat och källarkivsbindning
Efter att den validerade binärkonverteringen går in i den befintliga XML-parsaren följer sena XML-tolknings- eller programcallbackfel den vanliga livscykeln för XML-öppning; preflightgarantin lovar inte återrullning av godtyckliga callback-skrivningar
Sparandet mellanlagrar hela det binära paketet; filutdata använder en temporär syskonfil och ett enda slutligt utbyte, och läsbar seekbar strömutdata behåller en ögonblicksbild av byte, storlek och position för återrullning efter ett misslyckat commit
LastSaveUsedStreaming=False återspeglar komplett binär mellanlagring även när den mellanliggande XML-skrivaren strömmar; minnet inkluderar konverterade delar och hela paketet, så den här backenden är ingen strömmande skrivare med avgränsat minne
Konverteringsrapporter och preflight behåller packad celllagring, inklusive en blandning av packade värden och materialiserade formler; lyckat sparande kan expandera packade värden via den befintliga formatförberedelsen och kalkylbladsskrivaren, så rapporthet innebär inte en oföränderlig eller icke-materialiserande sparåtgärd
Lyckat binärt filsparande rensar tidigare råa XML-källbindningar; strömsparande behåller filnamnsbeteendet, och avbrott kontrolleras före destinationens commit
API:er för paketkonvertering
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) validerar arbetsbokens namnsammanhang och Validate(FormulaText, SheetIndex) validerar en formel utan cellåtkomst i kalkylbladet; SheetIndex är nollbaserad och uppringaren äger validatorn
XlsbValidateTableXml(Data) och XlsbValidateAutoFilterXml(Data) validerar UTF-8-objekt-XML mot samma kodarkontrakt som paketutdata använder; fel utlöser de befintliga undantagen för format eller funktioner som inte stöds
De här lxXlsb-API:erna behåller uppringarens ägarskap; paketkonverteringen validerar och mellanlagrar alla delar innan Destination ersätts från offset noll, och bryggor för kärndelar använder UTF-8-XML och råa binära byte
EXlsbUnsupported härstammar från EXlsbFormatError och skiljer förväntat delmängsavslag från felformade data; avbrott utlöser det etablerade strömavbrottsundantaget före committen
Komprimeringen accepterar -1 till 9, och det fasta datumet accepterar noll eller ett ändligt DOS-representerbart datum från 1980 till 2107; ogiltiga alternativ avslås innan målet ändras