HotXLS-dokumentation

Projektmappe-infrastruktur-API

Disse offentlige medlemmer understøtter integrationer, der inspicerer I/O, implementerer serializers eller koordinerer beregning på tværs af projektmapper, med projektmappemedlemmer deklareret i lxHandleX og workspace-grafen deklareret i lxDepGraph

Almindelige applikationer bør bruge celleformatering, SaveAs, Recalculate og de eksterne projektmappe-workspace-API'er først; style pool-registrering og grafplanlægning kræver de samme indeks- og levetidskonventioner som bibliotekets serializers og beregningsmotor

I/O-observation og genoprettelse

TXLSXWorkbook.OnReadCell modtager arkindeks, række, kolonne, gemt værdi og formel for hver materialiseret celle under XLSX-parsing med et skrivbart Cancel-flag; TXLSXWorkbook.OnWriteCell modtager en skrivbar outputværdi plus Skip- og Cancel-flag, før en celle serialiseres, så en vært kan transformere eller udelade output uden at erstatte projektmappens API med den direkte stream-API

Begge callbacks bruger 1-baserede regnearks- og cellekoordinater, og deres deklarerede typer er TXLSXCellReadEvent og TXLSXCellWriteEvent; callbacks eksekverer inde i den aktive I/O-operation, så undgå at starte en anden operation på samme projektmappe fra et callback

TXLSXWorkbook.RecoveryMode er som standard False og lader understøttede regnearks-XML-parsingsfejl blive til advarselsdiagnostik, mens åbningen fortsætter og potentielt kun efterlader delvist genoprettet regnearksindhold; den garanterer ikke genoprettelse fra en ulæselig ZIP-pakke, så inspeicer diagnostik og genoprettede data, før du gemmer

TXLSXWorkbook.FireProgress dispatcherer en fase, tilstand, aktuelt antal og totalt antal til de tildelte progress-handlers, hvor den legacy handler modtager arbejdsnotifikationer, og den udvidede handler modtager alle tilstande; en udvidet handler kan anmode om annullering, bortset fra at skrivning-slut-notifikationen ikke kan omstøde et allerede committet output

TXLSXWorkbook.AddDiagnostic tilføjer og returnerer en diagnostik ejet af projektmappen, gemmer den leverede kode, alvorlighedsgrad, operation, besked, native kode, arkkontekst og pakkedelsnavn, kopierer exception-klassenavnet, når en exception leveres, og kalder OnDiagnostic; den tager ikke ejerskab til exceptionen og udløser den ikke

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

Outputpolitikker og inspektion af gemte pakker

TXLSXWorkbook.CSVEmitFormulas er som standard False og skifter CSV-output fra formelresultater til formeltekst for formelceller; resultatoutput forsøger formelevaluering og falder tilbage til gemt celletekst eller -værdi, når evalueringen fejler; TXLSXWorkbook.CSVQuoteAllStrings er også som standard False og tvinger anførselstegn omkring tekstfelter, mens tal, datoer, booleske værdier, Null og Empty beholder de normale citatregler

TXLSXWorkbook.LastSaveUsedStreaming rapporterer, om den seneste forberedte gemning brugte regnearksstreaming, mens TXLSXWorkbook.LastSavePeakRowXmlChars rapporterer det største bufferede række-XML-fragment, TXLSXWorkbook.LastSaveBufferedWorksheetXmlChars rapporterer den kombinerede bufferede regnearks-XML, og TXLSXWorkbook.LastSavePeakAuxiliaryXmlChars rapporterer det største sporede hjælpe-XML-fragment; det er tegnantal fra serializer-instrumentering frem for målinger af processens samlede hukommelse, og ODS-output bruger ikke XLSX-regnearksstreaming-stien

TXLSXWorkbook.TryCopyPreservedPart forsøger at kopiere en kvalificeret bevaret kildedel, inklusive dens komprimerede repræsentation, ind i en kalder-leveret destinations-TZipArchive og returnerer True ved kopiering eller False, når normal serialisering er påkrævet; kilden skal forblive tilgængelig fra en filbaseret åbning, og manglende eller eksplicit kasserede dele kan ikke kopieres

Kalderen ejer destinationsarkivet og skal færdiggøre det normalt; en fejl i compressed-copy-rollback kan stadig udløse en exception, og denne hjælper konstruerer hverken en komplet projektmappes-pakke eller opdaterer dens relationer eller content types

Kryptering og projektmappemetadata

TXLSXWorkbook.SaveAsEncryptedAgile accepterer et filnavn og en ikke-tom adgangskode, serialiserer XLSX-pakken i hukommelsen og skriver den Agile-krypterede container og returnerer 1 ved succes eller -1 ved rapporteret fejl; valgfri VerifyEncryptedSave udfører et genåbningstjek efter skrivning, og metoden kræver hukommelse til både den ukrypterede pakke og dens serialiserede bytes

TXLSXWorkbook.VerifyEncryptedFile åbner den leverede fil og adgangskode i en midlertidig projektmappe og returnerer kun True, når den åbning lykkes, og konverterer exceptions til False; det tjekker læsbarhed frem for at sammenligne hver celle med den aktuelle projektmappe og følger den normale OpenEncrypted-adfærd for en ukrypteret XLSX-input

TXLSXWorkbook.DocSecurity gemmer det udvidede dokumentegenskabs-bitfelt: 1 angiver adgangskodebeskyttelse, 2 anbefaling om skrivebeskyttelse, 4 gennemtvunget skrivebeskyttet tilstand og 8 annoteringslåsning; disse metadata-bits påfører ikke selv kryptering eller adgangsbegrænsninger

TXLSXWorkbook.DocPropsTouched er det skrivebeskyttede flag, dokumentegenskabs-writerne bruger til at afgøre, om sporede egenskaber er konfigureret; sporede egenskabssættere som Title sætter det, mens direkte tildelt udvidet metadata ikke automatisk sætter det

TXLSXWorkbook.WorkbookProtectHash eksponerer den indlæste eller genererede legacy projektmappebeskyttelseshash, normalt fire hexadecimale cifre eller en tom streng, når der ikke findes nogen adgangskodehash; brug projektmappens beskyttelsesmetoder til at ændre beskyttelse i stedet for at tildele denne skrivebeskyttede værdi, og hold projektmappestruktur-beskyttelse adskilt fra krypteret fillagring

TXLSXWorkbook.ThemeMajorFont og TXLSXWorkbook.ThemeMinorFont eksponerer overskrifts- og brødtekstypeface, der er indlæst fra temaet, og overstyrer navnene, når standard Office-temaet genereres; et verbatim bevaret tema har forrang for disse fontnavneindstillinger

Tabelstile og serializer style pools

TXLSXWorkbook.DefaultTableStyleName og TXLSXWorkbook.DefaultPivotStyleName round-tripper standardnavnene gemt i stiltabellen for nyligt indsatte Excel-tabeller og pivottabeller; tildeling af dem omformaterer ikke direkte alle eksisterende objekter

TXLSXWorkbook.ResolveTableStyle returnerer en projektmappens ejet brugerdefineret stil efter navn, opløser ellers og cacher understøttede indbyggede TableStyleLight1 til TableStyleLight21, TableStyleMedium1 til TableStyleMedium28 eller TableStyleDark1 til TableStyleDark11 og returnerer nil for et ukendt navn; frigør ikke den returnerede stil

TXLSXWorkbook.FastStyleAppend er som standard False og lader masseoprettelse springe deduplikeringsscanninger i style pools og almindelig sammensat stil-registrering over og bytter en større stiltabel for hurtigere indsættelse, når mange distinct formater oprettes

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 registrerer de kombinerede font-, fyld-, kant-, talformat-, justerings- og beskyttelsesindekser og returnerer det absolutte cellXfs-indeks, ikke en composite-pool-slot; syv-argument-overloaderen accepterer et indbygget talformat-ID, der har forrang for det leverede brugerdefinerede formatindeks, hvor nul betyder ingen overstyring

TXLSXWorkbook.RegisterLinkedCompositeXf gemmer derudover forælderens style-XF-ID og de formatdele, der er kædet til den forælder, og beholder separate indgange for forskellige forælder- eller linkagekombinationer; den returnerer også et absolut cellXfs-indeks

TXLSXWorkbook.CompositeXfBase returnerer det første absolutte kompositindeks, beregnet ud fra de aktuelle endimensionelle style pools, mens TXLSXWorkbook.CompositeXfCount tæller registrerede kompositindgange; en pool-slot brugt af GetCompositeXf er det absolutte indeks minus basen, og basen kan ændre sig, når disse pools vokser, så disse værdier hører til den aktuelle serialiseringstilstand

TXLSXWorkbook.RegisterCondDxf registrerer en lånt TXLSDxfStyle-reference og returnerer dens nulbaserede differentialstil-ID og genbruger et eksisterende ID for samme objektreference; hold objektet i live, mens serialisering bruger det

TXLSXWorkbook.ResetCondDxfs rydder det aktive registriantal uden at frigøre lånte stilarter, og TXLSXWorkbook.CondDxfCount rapporterer det antal; save-forberedelse genopbygger dette registri, så persistér ikke disse ID'er uafhængigt af den pakke, der skrives

TXLSXWorkbook.PivotCaches er den projektmappens ejede TXLSPivotCaches-samling delt af regnearkenes pivottabeller; AddPivotTable genbruger en matchende kildecache eller opretter én, og RefreshPivotCache opdaterer den identificerede cache, mens understøttede medlemsidentiteter bevares

Beregningsintegration

TXLSXWorkbook.RecalcThreads er som standard nul, hvor nul eller én bruger seriel genberegning, og større værdier aktiverer worker-evaluering af uafhængige formelfrontierer; projektmapper med dynamiske arrays bruger en seriel passering uanset denne indstilling, what-if-datatablenoder forbliver serielle, og user-function-handlers brugt af workers skal være trådsikre

TXLSXWorkbook.SolveCycleIteratively er et avanceret indgangspunkt, normalt kaldt af Recalculate, når iteration er aktiveret, forbruger nodeindekser fra den pågældende projektmappens aktuelle afhængighedsgraf og evaluerer cyklusnoder i den leverede TList; indekser fra en workspace-graf eller en anden projektmappe er ikke udskiftelige

Solveren bruger IterateCount og IterateDelta, beholder de endelige værdier, selv om iterationsgrænsen nås, og returnerer lxOk uden at certificere konvergens; dynamiske array-cyklusmedlemmer returnerer lxErrorCircumRef, og signaturens CycleCount-argument erstatter ikke cyklusklassificering på grafnoderne

Opbygning af workspace-afhængighedsgraf

TXLSWorkspaceDepGraph gemmer formelafhængigheder på tværs af kalder-leverede projektmappeidentiteter og arkidentiteter uden at åbne projektmapper eller evaluere formler; konstruér en graf ud fra de aktuelle formler og opløste referencer, og genopbyg den derefter efter strukturelle eller formelændringer, der ugyldiggør disse referencer

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 tilføjer en formelnode og returnerer dens nulbaserede nodeindeks og kopierer de leverede referencer i stedet for at eje deres liste; arkindekser er 1-baserede, mens række- og kolonnekoordinater, inklusive outputrektanglets nederste højre hjørne, er nulbaserede calculator-koordinater

TXLSWorkspaceDepReferenceList.Add tilføjer en opløst celle-, område- eller defineret navn-referencerecord, TXLSWorkspaceDepReferenceList.Items læser disse records efter nulbaseret indeks, og TXLSWorkspaceDepReferenceList.Clear nulstiller listen til genbrug; kalderen ejer denne inputliste og kan rydde eller frigøre den, efter AddNode har kopieret dens indgange

TXLSWorkspaceDepGraph.BuildEdges opløser gemte celle- og områdereferencer mod formeloutputrektangler; referencer markeret LookupScan propagerer snavs, men påfører ikke evalueringsrækkefølge og deltager ikke i cyklusdetektion

TXLSWorkspaceDepGraph.NodeIndexOf opløser en projektmappe, et ark, en række og en kolonne til et nulbaseret nodeindeks eller -1, når fraværende, og bruger arknavnet, når det er tilgængeligt, med det deklarerede arkindeks som fallback

TXLSWorkspaceDepGraph.FindDependentsOfDefinedName rydder en leveret ikke-nil TList og fylder den med nodeindeksene, der direkte refererer til det navngivne symbol i den specificerede projektmappe og scope, hvor et negativt scope-indeks matcher alle scopes; indgange er kodet som Pointer(NativeInt(NodeIndex)), så en nil-listeindgang kan repræsentere node nul

Workspace-dirty-generationer og evalueringsrækkefølge

TXLSWorkspaceDepGraph.BeginDirtyGeneration starter en ny generation, nulstiller det aktive dirty-node-antal og cyklus-blokerede flag og gør tidligere dirty-stempler inaktive; kald den, før du markerer noderne til en ny genberegningspassering

TXLSWorkspaceDepGraph.MarkAllDirty markerer hver node i den aktuelle generation; TXLSWorkspaceDepGraph.MarkWorkbookDirty seeder noder tilhørende den identificerede projektmappe og noder, der refererer til den, og propagerer derefter til afhængige, mens TXLSWorkspaceDepGraph.MarkVolatileDirty seeder volatile noder, og TXLSWorkspaceDepGraph.MarkCyclesDirty seeder detekterede cykluskomponenter og propagerer også deres dirtiness

TXLSWorkspaceDepGraph.IsNodeDirty rapporterer, om en gyldig node bærer det aktuelle generationsstempel og returnerer False for et ugyldigt indeks; TXLSWorkspaceDepGraph.DirtyGeneration eksponerer det stempel, og TXLSWorkspaceDepGraph.DirtyNodeCount tæller noderne markeret i den aktive generation

TXLSWorkspaceDepGraph.DirtyTopoOrder kræver en ikke-nil kalder-ejet TList, rydder den og fylder den med dirty nodeindekser i afhængighedsrækkefølge eksklusive dirty cyklusnoder og noder blokeret af disse cyklusser; dens to outputtal adskiller cyklusmedlemmer fra blokerede downstream-noder, og listeindgange bruger samme pointerkodede nulbaserede indekskonvention

TXLSWorkspaceDepGraph.HasRefUnstable rapporterer, om en node blev tilføjet med reference-ustabil-flagget, hvilket lader kalderen undgå at stole på et forældet statisk skema, når formelreferencer kan ændre sig ved evalueringstid; grafen opløser ikke selv de skiftende referencer

Inspektion af workspace-graf

TXLSWorkspaceDepGraph.NodeCount tæller formelnoder, TXLSWorkspaceDepGraph.ReferenceCount tæller kopierede referencer, og TXLSWorkspaceDepGraph.EdgeCount rapporterer byggede afhængighedskanter; kald BuildEdges, før du forbruger kanstatistik

TXLSWorkspaceDepGraph.WorkbookCount tæller internede projektmappeidentiteter, inklusive identiteter indført af referencer, og TXLSWorkspaceDepGraph.WorkbookIdentities enumererer dem efter nulbaseret indeks; disse identitetsstrenge er grafnøgler frem for bevis på, at en ekstern fil blev indlæst

TXLSWorkspaceDepGraph.ComponentCount rapporterer antallet af stærkt forbundne komponenter efter komponentkonstruktion, som udløses af MarkCyclesDirty, DirtyTopoOrder eller komponentadgang; hver Components-record leverer NodeStart, NodeCount og IsCycle

TXLSWorkspaceDepGraph.ComponentNodes eksponerer det fladtrykte nulbaserede nodeindeks-array for de komponenter, indekseret fra en komponents NodeStart til NodeStart + NodeCount - 1; antal og indekserede records beskriver den aktuelle graf og bør genhentes efter grafrekonstruktion

Fortsæt med yderligere XLSX facade-medlemmer og XLSX-facade-oversigten for de almindelige projektmappe-indgangspunkter