HotXLS-documentatie

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

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