HotXLS-dokumentation

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

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