HotXLS-documentatie

Werkmap-infrastructuur-API

Deze openbare leden ondersteunen integraties die I/O inspecteren, serialisators implementeren of berekening over werkmappen heen coördineren, met werkmapleden gedeclareerd in lxHandleX en de werkruimtegrafiek gedeclareerd in lxDepGraph

Gewone toepassingen gebruiken eerst celformattering, SaveAs, Recalculate en de externe-werkmap-werkruimte-API's; stijlpoolregistratie en grafiekscheduling vereisen dezelfde index- en levensduurconventies als de serialisators en berekeningsengine van de library

I/O-waarneming en herstel

TXLSXWorkbook.OnReadCell ontvangt bladindex, rij, kolom, opgeslagen waarde en formule van elke gematerialiseerde cel tijdens XLSX-parsing, met een schrijfbare Cancel-vlag; TXLSXWorkbook.OnWriteCell ontvangt een schrijfbare uitvoerwaarde plus Skip- en Cancel-vlaggen voordat een cel wordt geserialiseerd, zodat een host uitvoer kan transformeren of weglaten zonder de werkmap-API te vervangen door de directe stream-API

Beide callbacks gebruiken 1-based werkblad- en celcoördinaten, en hun gedeclareerde types zijn TXLSXCellReadEvent en TXLSXCellWriteEvent; callbacks draaien binnen de actieve I/O-bewerking, dus start geen andere bewerking op dezelfde werkmap vanuit een callback

TXLSXWorkbook.RecoveryMode staat standaard op False en laat ondersteunde werkblad-XML-parseerfouten uitkomen als waarschuwingsdiagnoses terwijl het openen doorgaat, waarbij mogelijk slechts gedeeltelijk herstelde werkbladinhoud achterblijft; het garandeert geen herstel uit een onleesbaar ZIP-pakket, dus inspecteer diagnoses en herstelde data vóór het opslaan

TXLSXWorkbook.FireProgress stuurt een fase, status, actueel aantal en totaal aantal naar de toegewezen progress-handlers, waarbij de legacy-handler werkingsmeldingen ontvangt en de uitgebreide handler alle statussen; een uitgebreide handler kan annulering vragen, behalve dat de melding aan het einde van het schrijven een al vastgelegde uitvoer niet kan terugdraaien

TXLSXWorkbook.AddDiagnostic voegt een diagnose toe die eigendom is van de werkmap en geeft die terug, registreert de meegegeven code, ernst, bewerking, melding, native code, bladcontext en pakketonderdeelnaam, kopieert de exception-klassenaam wanneer een exception wordt meegegeven en roept OnDiagnostic aan; het wordt niet eigenaar van de exception en geeft die niet door

function TXLSXWorkbook.AddDiagnostic(ACode: Integer;
  ASeverity: TXLSDiagnosticSeverity; AOperation: TXLSDiagnosticOperation;
  const AMessage: WideString; ANativeCode, ASheetIndex: Integer;
  const ASheetName, APartName: WideString;
  AException: Exception): TXLSDiagnostic;

Uitvoerbeleid en inspectie van opgeslagen pakketten

TXLSXWorkbook.CSVEmitFormulas staat standaard op False en zet CSV-uitvoer voor formulecellen om van formuleresultaten naar formuletekst; resultaatuitvoer probeert formule-evaluatie en valt terug op opgeslagen celtekst of -waarde wanneer evaluatie mislukt; TXLSXWorkbook.CSVQuoteAllStrings staat ook standaard op False en forceert aanhalingstekens rond tekstvelden, terwijl getallen, datums, Booleans, Null en Empty de normale aanhaalregels volgen

TXLSXWorkbook.LastSaveUsedStreaming rapporteert of de meest recente voorbereide opslag werkbladstreaming gebruikte, terwijl TXLSXWorkbook.LastSavePeakRowXmlChars het grootste gebufferde rij-XML-fragment rapporteert, TXLSXWorkbook.LastSaveBufferedWorksheetXmlChars de gecombineerde gebufferde werkblad-XML rapporteert, en TXLSXWorkbook.LastSavePeakAuxiliaryXmlChars het grootste gevolgde hulp-XML-fragment; dit zijn tekenaantallen uit serializer-instrumentatie en geen metingen van het totale procesgeheugen, en ODS-uitvoer gebruikt het XLSX-werkbladstreamingpad niet

TXLSXWorkbook.TryCopyPreservedPart probeert een in aanmerking komend bewaard brononderdeel, inclusief zijn gecomprimeerde representatie, te kopiëren naar een door de aanroeper geleverde bestemmings-TZipArchive en geeft True terug bij kopiëren of False wanneer normale serialisatie nodig is; de bron moet beschikbaar blijven vanuit een op bestand gebaseerde opening, en ontbrekende of expliciet weggegooide onderdelen kunnen niet worden gekopieerd

De aanroeper is eigenaar van het doelarchief en moet dat normaal afsluiten; een terugrolfout bij gecomprimeerd kopiëren kan alsnog een exception geven, en deze helper bouwt geen volledig werkmappakket en werkt zijn relaties of contenttypes niet bij

Versleuteling en werkmapmetadata

TXLSXWorkbook.SaveAsEncryptedAgile accepteert een bestandsnaam en niet-leeg wachtwoord, serialiseert het XLSX-pakket in het geheugen en schrijft de Agile-versleutelde container, met 1 bij succes of -1 bij een gerapporteerde fout; de optionele VerifyEncryptedSave doet een heropen-controle na het schrijven, en de methode vereist geheugen voor zowel het onversleutelde pakket als zijn geserialiseerde bytes

TXLSXWorkbook.VerifyEncryptedFile opent het meegegeven bestand en wachtwoord in een tijdelijke werkmap en geeft alleen True terug wanneer die opening slaagt, met exceptions omgezet naar False; dit controleert leesbaarheid en vergelijkt niet elke cel met de huidige werkmap, en volgt het normale OpenEncrypted-gedrag voor een niet-versleutelde XLSX-invoer

TXLSXWorkbook.DocSecurity bewaart het bitveld van uitgebreide documenteigenschappen: 1 betekent wachtwoordbeveiliging, 2 aanbeveling alleen-lezen, 4 afgedwongen alleen-lezen-status en 8 annotatievergrendeling; deze metadatabits passen zelf geen versleuteling of toegangsbeperkingen toe

TXLSXWorkbook.DocPropsTouched is de alleen-lezen vlag die schrijvers van documenteigenschappen gebruiken om te beslissen of gevolgde eigenschappen zijn ingesteld; gevolgde eigenschapsetters zoals Title zetten die, terwijl direct toegewezen uitgebreide metadata die niet automatisch zet

TXLSXWorkbook.WorkbookProtectHash stelt de geladen of gegenereerde legacy-werkmapbeveiligingshash bloot, normaal vier hexadecimale cijfers of een lege string wanneer er geen wachtwoordhash bestaat; gebruik de werkmapbeveiligingsmethoden om beveiliging te wijzigen in plaats van deze alleen-lezen waarde toe te wijzen, en houd werkmapstructuurbeveiliging gescheiden van versleutelde bestandsopslag

TXLSXWorkbook.ThemeMajorFont en TXLSXWorkbook.ThemeMinorFont stellen de uit het thema geladen kop- en bodylettertypen bloot en overschrijven de namen wanneer het standaard Office-thema wordt gegenereerd; een letterlijk bewaard thema gaat vóór deze lettertypenaaminstellingen

Tabelstijlen en serializer-stijlpools

TXLSXWorkbook.DefaultTableStyleName en TXLSXWorkbook.DefaultPivotStyleName laten de standaardnamen die in de stijltabel staan voor nieuw ingevoegde Excel-tabellen en draaitabellen roundtrippen; ze toewijzen formatteert niet direct elke bestaande opnieuw

TXLSXWorkbook.ResolveTableStyle geeft een werkmap-eigen aangepaste stijl op naam terug, lost anders ondersteunde ingebouwde TableStyleLight1 tot en met TableStyleLight21, TableStyleMedium1 tot en met TableStyleMedium28, of TableStyleDark1 tot en met TableStyleDark11 op en cachet die, en geeft nil terug bij een onbekende naam; geef de teruggegeven stijl niet vrij

TXLSXWorkbook.FastStyleAppend staat standaard op False en laat bulkcreatie deduplicatiescans in de stijlpools en gewone samengestelde-stijlregistratie overslaan, met een grotere stijltabel als prijs voor sneller invoegen wanneer veel onderscheiden stijlen worden aangemaakt

function TXLSXWorkbook.RegisterCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt: Integer): Integer; overload;
function TXLSXWorkbook.RegisterCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt,
  ABuiltinNumFmt: Integer): Integer; overload;
function TXLSXWorkbook.RegisterLinkedCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt,
  AParentXfId: Integer; ALinkedParts: TXLSXFormatParts): Integer;

TXLSXWorkbook.RegisterCompositeXf registreert de gecombineerde lettertype-, opvullings-, rand-, getalnotatie-, uitlijnings- en beveiligingsindices en geeft de absolute cellXfs-index terug, geen compositiepool-slot; de overload met zeven argumenten accepteert een ingebouwd getalnotatie-ID dat vóór de meegegeven aangepaste notatieindex gaat, waarbij nul betekent geen overschrijving

TXLSXWorkbook.RegisterLinkedCompositeXf registreert daarnaast de ouder-stijl-XF-ID en de aan die ouder gekoppelde notatieonderdelen, met aparte items voor verschillende ouder- of koppelingscombinaties; ook hij geeft een absolute cellXfs-index terug

TXLSXWorkbook.CompositeXfBase geeft de eerste absolute compositie-index terug, berekend uit de actuele eendimensionale stijlpools, terwijl TXLSXWorkbook.CompositeXfCount het aantal geregistreerde compositie-items telt; een poolslot dat GetCompositeXf gebruikt is de absolute index minus de basis, en de basis kan veranderen wanneer die pools groeien, dus deze waarden horen bij de actuele serialisatiestatus

TXLSXWorkbook.RegisterCondDxf registreert een geleende TXLSDxfStyle-referentie en geeft zijn zero-based differentiële-stijl-ID terug, waarbij een bestaande ID wordt hergebruikt voor dezelfde objectreferentie; houd het object in leven zolang serialisatie het gebruikt

TXLSXWorkbook.ResetCondDxfs wist het aantal in het actieve register zonder geleende stijlen vrij te geven, en TXLSXWorkbook.CondDxfCount rapporteert dat aantal; het voorbereiden van opslag bouwt dit register opnieuw, dus bewaar deze ID's niet los van het pakket dat wordt weggeschreven

TXLSXWorkbook.PivotCaches is de door de werkmap beheerde verzameling TXLSPivotCaches die werkblad-draaitabellen delen; AddPivotTable hergebruikt een matchende broncache of maakt er een aan, en RefreshPivotCache vernieuwt de geïdentificeerde cache met behoud van ondersteunde ledenidentiteiten

Berekeningsintegratie

TXLSXWorkbook.RecalcThreads staat standaard op nul, waarbij nul of één seriematige herberekening betekent en grotere waarden worker-evaluatie van onafhankelijke formuliegrenzen inschakelen; werkmappen met dynamische arrays gebruiken hoe dan ook een seriematige pass, what-if-datatabelknooppunten blijven serieel, en door workers gebruikte handlers voor gebruikersfuncties moeten thread-safe zijn

TXLSXWorkbook.SolveCycleIteratively is een geavanceerd ingangspunt dat normaal door Recalculate wordt aangeroepen wanneer iteratie is ingeschakeld, knoopindices uit de actuele afhankelijkheidsgrafiek van die werkmap verbruikt en cyclusknooppunten evalueert in de meegegeven TList; indices uit een werkruimtegrafiek of andere werkmap zijn niet uitwisselbaar

De solver gebruikt IterateCount en IterateDelta, behoudt de eindwaarden zelfs wanneer de iteratielimiet is bereikt en geeft lxOk terug zonder convergentie te certificeren; leden van dynamische-array-cycli geven lxErrorCircumRef terug, en het CycleCount-argument van de signatuur vervangt de cyclusclassificatie op de grafiekknooppunten niet

Opbouw van de werkruimte-afhankelijkheidsgrafiek

TXLSWorkspaceDepGraph bewaart formuleafhankelijkheden over door de aanroeper geleverde werkmap- en bladidentiteiten heen, zonder werkmappen te openen of formules te evalueren; bouw een grafiek vanuit de actuele formules en opgeloste verwijzingen en bouw hem opnieuw op na structurele of formulewijzigingen die die verwijzingen ongeldig maken

function TXLSWorkspaceDepGraph.AddNode(
  const AWorkbookIdentity, ASheetName: WideString;
  ASheetIndex, ARow, ACol, AOutRow2, AOutCol2: Integer;
  AVolatile: Boolean; AReferences: TXLSWorkspaceDepReferenceList;
  ARefUnstable: Boolean = False): Integer;
procedure TXLSWorkspaceDepGraph.DirtyTopoOrder(AOrder: TList;
  out ACycleNodeCount, ABlockedNodeCount: Integer);

TXLSWorkspaceDepGraph.AddNode voegt een formuleknoop toe en geeft zijn zero-based knoopindex terug, waarbij de meegegeven verwijzingen worden gekopieerd in plaats van dat hun lijst wordt beheerd; bladindices zijn 1-based, terwijl rij- en kolomcoördinaten, inclusief de rechteronderhoek van de inclusieve uitvoerrechthoek, zero-based calculatorcoördinaten zijn

TXLSWorkspaceDepReferenceList.Add voegt een opgeloste cel-, bereik- of gedefinieerde-naam-verwijzingsrecord toe, TXLSWorkspaceDepReferenceList.Items leest die records op zero-based index, en TXLSWorkspaceDepReferenceList.Clear reset de lijst voor hergebruik; de aanroeper is eigenaar van deze invoerlijst en kan die wissen of vrijgeven nadat AddNode de items heeft gekopieerd

TXLSWorkspaceDepGraph.BuildEdges lost opgeslagen cel- en bereikverwijzingen op tegen formule-uitvoerrechthoeken; verwijzingen gemarkeerd met LookupScan propageren vuilheid maar leggen geen evaluatievolgorde op en doen niet mee aan cyclusdetectie

TXLSWorkspaceDepGraph.NodeIndexOf lost een werkmap, blad, rij en kolom op naar een zero-based knoopindex of -1 wanneer afwezig, met gebruik van de bladnaam wanneer beschikbaar en de gedeclareerde bladindex als fallback

TXLSWorkspaceDepGraph.FindDependentsOfDefinedName wist een meegegeven niet-nil TList en vult die met de knoopindices die rechtstreeks naar het benoemde symbool verwijzen in de opgegeven werkmap en scope, waarbij een negatieve scope-index alle scopes matcht; items worden gecodeerd als Pointer(NativeInt(NodeIndex)), dus een nil-lijstitem kan knoop nul representeren

Werkruimte-dirty-generaties en evaluatievolgorde

TXLSWorkspaceDepGraph.BeginDirtyGeneration start een nieuwe generatie, reset het aantal actieve dirty-knooppunten en de cyclusgeblokkeerde vlaggen en maakt eerdere dirty-stempels inactief; roep het aan voordat je de knooppunten voor een nieuwe herberekeningspass markeert

TXLSWorkspaceDepGraph.MarkAllDirty markeert elke knoop in de actuele generatie; TXLSWorkspaceDepGraph.MarkWorkbookDirty zaait knooppunten van de geïdentificeerde werkmap en knooppunten die ernaar verwijzen en propageert dan naar afhankelijken, terwijl TXLSWorkspaceDepGraph.MarkVolatileDirty volatile knooppunten zaait en TXLSWorkspaceDepGraph.MarkCyclesDirty gedetecteerde cycluscomponenten zaait, ook met propagatie van hun vuilheid

TXLSWorkspaceDepGraph.IsNodeDirty rapporteert of een geldige knoop de actuele generatiestempel draagt en geeft False terug bij een ongeldige index; TXLSWorkspaceDepGraph.DirtyGeneration stelt die stempel bloot en TXLSWorkspaceDepGraph.DirtyNodeCount telt de knooppunten die in de actieve generatie zijn gemarkeerd

TXLSWorkspaceDepGraph.DirtyTopoOrder vereist een niet-nil door de aanroeper beheerde TList, wist die en vult die met dirty-knoopindices in afhankelijkheidsvolgorde, exclusief dirty-cyclusknooppunten en knooppunten die door die cycli geblokkeerd worden; zijn twee uitvoeraantallen onderscheiden cyclusleden van geblokkeerde benedenstroomse knooppunten, en lijstitems gebruiken dezelfde pointergecodeerde zero-based indexconventie

TXLSWorkspaceDepGraph.HasRefUnstable rapporteert of een knoop met de referentie-onstabiel-vlag is toegevoegd, zodat de aanroeper niet hoeft te leunen op een verouderd statisch schema wanneer formuleverwijzingen op evaluatietijdstip kunnen veranderen; de grafiek lost die veranderlijke verwijzingen niet zelf op

Inspectie van de werkruimtegrafiek

TXLSWorkspaceDepGraph.NodeCount telt formuleknopen, TXLSWorkspaceDepGraph.ReferenceCount telt gekopieerde verwijzingen, en TXLSWorkspaceDepGraph.EdgeCount rapporteert de opgebouwde afhankelijkheidsedges; roep BuildEdges aan voordat je edgestatistieken verbruikt

TXLSWorkspaceDepGraph.WorkbookCount telt geïnterneerde werkmapidentiteiten, inclusief identiteiten die via verwijzingen zijn geïntroduceerd, en TXLSWorkspaceDepGraph.WorkbookIdentities somt die op per zero-based index; deze identiteitsstrings zijn grafieksleutels en geen bewijs dat een extern bestand is geladen

TXLSWorkspaceDepGraph.ComponentCount rapporteert het aantal sterk samenhangende componenten na componentopbouw, die wordt getriggerd door MarkCyclesDirty, DirtyTopoOrder of componenttoegang; elk Components-record levert NodeStart, NodeCount en IsCycle

TXLSWorkspaceDepGraph.ComponentNodes stelt de afgeplatte zero-based knoopindexarray voor die componenten bloot, geïndexeerd van NodeStart van een component tot en met NodeStart + NodeCount - 1; aantallen en geïndexeerde records beschrijven de actuele grafiek en moeten na grafiekreconstructie opnieuw worden opgevraagd

Ga verder met aanvullende XLSX-facade-leden en het XLSX-facade-overzicht voor de gewone werkmap-ingangspunten