HotXLS-documentatie

Extra bibliotheek-API-leden

Deze pagina voltooit de referentie voor openbare typen die de primaire werkmap-, werkblad-, rendering-, import-, diagnostiek- en viewer-API's ondersteunen maar geen aparte taakgerichte handleiding vereisen

Filtering en voorwaardelijke opmaak

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clearen ParseAutofilterData bewerken of importeren de filterdefinitie; SetRangeBounds(ARow1, ACol1, ARow2, ACol2) herstelt inclusieve grenzen (1-based) zonder geladen criteria of dropdown-shapes te verwijderen, en negeert niet-positieve of omgekeerde grenzen en een kolomaantal dat afwijkt van de geladen velden; Defined, FirstRow, FirstCol, LastCol, LastRowen FieldCount leggen de actieve grenzen en het aantal gefilterde kolommen bloot
TXLSAutofilterItemShape legt de tekenkoppeling van de filterknop die bij het item hoort bloot, en het geladen filtercriterium is beschikbaar als operandrecord TXLSAutofilterDOPER — DataType kiest de vorm van de operand en grbitSgn draagt de teken- en vlagbits — ter inspectie of voor roundtrip-bewerking
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTinten ClearAxisThemeColor bepalen de as; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositiveen NegativeBorderColor bepalen het uiterlijk van de balken; IsIndexedColor, IndexedColorIndexen ClearIndexedColor beheren de balkkleur via de paletindex
TXLSIconSetSpecThresholdEqualsInclude kiest per icoondrempel tussen inclusieve en exclusieve vergelijking
TXLSCfValueIsIndexedColor en IndexedColorIndex melden een drempelkleur die is opgeslagen als verouderde paletindex, ClearIndexedColor verwijdert die vorm weer, en thema- of letterlijke kleuren blijven via de bestaande accessors beschikbaar

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpec en TXLSDxfStyle accepteren AttachWriteGuardOwneren koppelen het regelobject aan de bijbehorende werkmap, zodat bewerkingen automatisch een schrijfguard verkrijgen; de eigenaar implementeert TXLSCondFormatWriteGuardOwner, wiens enige methode AcquireWriteGuard de regel de schrijfguard van de werkmap geeft. TXLSDxfStyle voegt FontColorIndex met FontColorIsIndexed toe plus de paren FillFgColorIndex / FillFgColorIsIndexed en FillBgColorIndex / FillBgColorIsIndexed voor regelkleuren via de paletindex, plus de differential-font-overrides FontName, FontSizeen FontScheme (een lege tekenreeks, een puntgrootte of een thema-fontslot zoals major / minor) naast de bestaande leden voor bold, italic, underline en kleur; elke toewijzing verkrijgt de schrijfguard en markeert de regel als dirty voor heruitgifte

TXLSConnections, TXLSDataTablesen TXLSQueryTables leggen OnAcquireWriteGuard bloot (type TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuarden TXLSQueryTableAcquireWriteGuard), de hook die hun bewerkingspaden gebruiken om vóór de mutatie de IXLSWorkbookWriteGuard van de eigenende werkmap te verkrijgen en daarna de werkmapgeneratie op te schuiven; de guard registreert StartGeneration, en Complete markeert de schrijfbewerking als voltooid zodat afhankelijke caches opnieuw kunnen worden opgebouwd

Behouden gegevensverbindingen dragen een getypeerde beschrijving: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) classificeert de verbinding, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) legt de authenticatiemodus vast, en elke parameterwaarde van een verbinding is gelabeld met een TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). What-if-datatabellen melden hun opgeslagen definitietype via TXLSDataTableKind

Wat-als-datatabellen en draaitabelgroepering

TXLSDataTableAssign, ContainsCellen IsRoot kopiëren en inspecteren een tabel; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRowen RowInputDeleted leggen de opgeslagen berekeningsdefinitie bloot
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShiften Offset beheren de verzameling; FindByCell en FindRoot vinden de tabel die een gegeven cel bevat of die in die cel geworteld is; Count, Itemsen OnChange leggen de verzamelingsstatus bloot
TXLSPivotCacheFieldGroupBaseField en GroupParentField leggen de relaties tussen een gegroepeerd veld en het bijbehorende bron- of bovenliggende veld bloot

Iconset-drempels kunnen programmatisch worden gerenderd of gevalideerd: XLSCfIconSetCount meldt hoeveel iconen een TXLSIconSetType definieert, en XLSBuildCfIconGeometry vult een TXLSCfIconGeometry met de primitieven (TXLSCfIconPrimitive, soort TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) en punten (TXLSCfIconPoint) waarmee één icoon wordt getekend, zodat aangepaste renderers aansluiten op de ingebouwde icoonvormen van Excel

Diagnostiek, formuletracering en validatie

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetNameen StreamOffset identificeren één parser-, writer- of pakketdiagnose
TXLSDiagnosticsAdd voegt een diagnose toe, Clear zet de verzameling terug, en Count samen met Items somt de items op
TXLSDiagnosticSeverity and TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) classificeert één diagnose en TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) noemt de fase die haar produceerde; OnDiagnostic -handlers lezen beide uit de afgeleverde TXLSDiagnostic
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCounten StepCount leggen de huidige foutopsporingsmomentopname en de omvang van de traceringen bloot
TXLSFormulaTracerStepCount meldt het aantal geregistreerde evaluatiestappen
TXLSImportCheckAddRule, AddUniqueRuleen AddCrossColumnRule configureren kolompredicaten, samengestelde uniekheid en getypeerde vergelijkingen; Check geeft gestructureerde overtredingen terug uit opgeslagen werkbladwaarden en formulecaches zonder herberekening of materialisatie van gepakte cellen; HeaderRow, FirstRow, LastRow, OnVerifyCell, ViolationCounten Violation leggen grenzen, callbacks en resultaten bloot; Annotate en KeepOnlyViolations zijn expliciete correctiewerkmap-operaties; zie schema's voor importvalidatie voor typen, grenzen, datumsystemen, tuple-identiteit en faalgedrag

Schema's voor importvalidatie

TXLSImportCheck uit lxImportCheck valideert een TXLSXWorksheet tegen regels in beheer van de toepassing; hij inspecteert opgeslagen scalaire waarden en opgeslagen formulieresultaten, met 1-based werkbladcoördinaten en zonder impliciete conversie van tekst naar getal, datum of Boolean

Validator := TXLSImportCheck.Create;
try
  Validator.HeaderRow := 1;
  Rule := Validator.AddRule(2);
  Rule.Name := 'quantity';
  Rule.Flags := [irRequired, irValueType, irValueRange];
  Rule.ValueKind := ivkInteger;
  Rule.MinimumValue := 1;
  Rule.MaximumValue := 1000;

  Validator.AddUniqueRule([1, 3]).Name := 'account-and-region';
  Validator.AddCrossColumnRule(4, 5, icLessOrEqual).Name := 'start-before-end';
  FailureCount := Validator.Check(Sheet);
  if FailureCount > 0 then
    Validator.Annotate(Sheet, 'Import validator');
finally
  Validator.Free;
end;

HeaderRow > 0 begint de controle bij de volgende rij en gaat vóór FirstRow; anders is de standaard van FirstRow 1; LastRow = 0 gebruikt de laatst gebruikte rij van het werkblad, terwijl een positieve LastRow afwezige cellen kan meenemen zonder ze aan te maken; kolommen moeten binnen 1 tot en met 16.384 vallen en actieve datarijgrenzen binnen 1 tot en met 1.048.576

Kolomregels en expliciete typen

TlxImportColumnRuleColumn, Flags, Name, Title, MinLength, MaxLength, Pattern, ValueKinden DateSerialMode configureren één kolom; MinimumValue, MaximumValue, HasMinimum, HasMaximum, MinimumInclusiveen MaximumInclusive configureren grenzen; Validate controleert de schemaconfiguratie en PreparePattern bereidt de regex voor; de twee Check-overloads geven een Boolean terug met een foutmelding en optioneel een TlxImportViolationKind
TlxImportRuleFlagsirRequired, irTextLength, irPattern, irUniqueen irCallback behouden hun bestaande controles; irValueType schakelt ValueKind in en irValueRange schakelt de geconfigureerde grenzen in; een kolom zonder vlaggen wordt niet gecontroleerd
TlxImportValueKindivkAny accepteert ondersteunde eindige scalaire waarden, ivkNumber accepteert eindige numerieke Variants, ivkInteger vereist bovendien een integraal waarde, ivkDate accepteert datum-Variants of expliciet ingeschakelde Excel-serials, ivkBoolean vereist een Booleaanse Variant en ivkText vereist een string-Variant
TlxImportDateSerialModeidsNone is de standaard en houdt numerieke waarden onderscheiden van datums; idsExcel1900 en idsExcel1904 interpreteren numerieke waarden voor een kolom expliciet met irValueType en ValueKind = ivkDate

AddRule(Column) vervangt elke eerdere regel voor die kolom en geeft die vrij; de predicaten per waardetype, bereik, lengte en patroon slaan ontbrekende waarden, nulls en lege strings over, terwijl irRequired ze meldt; uniekheid behoudt de hieronder beschreven aparte beleidsregels; niet-lege witruimte blijft een waarde; een getal geldt niet als Boolean, een datum geldt niet als gewoon getal en een getalachtige string blijft tekst

Het toewijzen van MinimumValue of MaximumValue schakelt die grens in; HasMinimum of HasMaximum kan die weer uitschakelen; beide inclusiviteitsschakelaars staan standaard op True; grenzen moeten eindige getypeerde getallen of datums zijn, en twee grenzen moeten vergelijkbaar zijn en een niet-leeg interval beschrijven; omgekeerde, ontbrekende, incompatibele of lege grenzen geven een fout voordat de werkbladvalidatie begint

Getalgrenzen vergelijken numerieke waarden en datumgrenzen vergelijken datums; integer-naar-integer-vergelijkingen behouden alle Int64- en UInt64-bits; waarden van een incompatibele categorie laten de bereikcontrole falen; tekstlengte- en regexpredicaten blijven de tekstrepresentatie van de scalair inspecteren, en regexcontroles behouden het bestaande IsMatch-gedrag, dus gebruik ankers zoals ^...$ wanneer de volledige tekst moet matchen; een ongeldige regex schakelt zijn patrooncontrole uit voor compatibiliteit

Datumgeformatteerde Excel-waarden

Een vanuit Excel geïmporteerde cel kan een numerieke serial bevatten ook wanneer zijn getalnotatie een datum toont; kies expliciet een serialmodus wanneer dat het geaccepteerde importschema is; de modus raakt alleen de validatie en verandert nooit de opgeslagen celwaarde

Rule := Validator.AddRule(4);
Rule.Flags := [irRequired, irValueType, irValueRange];
Rule.ValueKind := ivkDate;
if Sheet.Workbook.Date1904 then
  Rule.DateSerialMode := idsExcel1904
else
  Rule.DateSerialMode := idsExcel1900;
Rule.MinimumValue := VarFromDateTime(EncodeDate(2026, 1, 1));
Rule.MaximumValue := VarFromDateTime(EncodeDate(2026, 12, 31));

VarFromDateTime is gedeclareerd in Variants en EncodeDate in SysUtils; numerieke serials moeten niet-negatief zijn en vóór 1 januari 10000 oplossen; fractionele serials behouden hun dagdeel; het 1900-stelsel wijst elke serial van 60 inclusief tot en met 61 exclusief af, omdat dat interval de fictieve schrikkeldag aanduidt; het 1904-stelsel mapt serial nul op 1 januari 1904

Datumgrenzen omvatten het dagdeel, dus een maximum dat is ingesteld op middernacht van 31 december sluit latere tijdstippen op die dag uit; gebruik een exclusieve bovengrens op 1 januari van het volgende jaar wanneer de hele laatste dag geaccepteerd moet worden; tekstuele datums zoals 10/08/2026 blijven tekst, ongeacht de geconfigureerde serialmodus

Samengestelde uniekheid en vergelijkingen tussen kolommen

AddUniqueRule(const AColumns: array of Integer): TlxImportUniqueRuleVoegt een onafhankelijke tuplebeperking toe over een geordende, niet-lege lijst van unieke kolommen; Name identificeert de regel, Title is een prefix van zijn melding, ColumnCount en nulgebaseerde Columns[Index] leggen zijn leden bloot, en SkipIncompleteRows staat standaard op True
AddCrossColumnRule(ALeftColumn, ARightColumn: Integer; AComparison: TlxImportComparison): TlxImportCrossColumnRuleVoegt een vergelijking binnen dezelfde rij toe met read-only LeftColumn en RightColumn, een bewerkbare Comparison, Name, Titleen SkipBlankValues, dat standaard op True staat
TlxImportComparisonicEqual, icNotEqual, icLess, icLessOrEqual, icGreateren icGreaterOrEqual kiezen de relatie; numerieke paren en datumparen vergelijken hun waarden, Booleaanse paren sorteren False vóór True, en stringparen vergelijken hoofdlettergevoelig en ordinaal op UTF-16-code-eenheden

Samengestelde sleutels behouden het exacte Variant-type en de tekstidentiteit van elk lid; Integer(1), Double(1), de string '1', een Boolean en een datum zijn verschillende leden; er is geen case folding, Unicode-normalisatie, localeparsing of scheidingstekenambiguïteit; combinaties zoals ('ab', 'c') en ('a', 'bc') blijven verschillend; elke validatiepass start een verse tuple-index

Wanneer SkipIncompleteRows = True, sluit een ontbrekend, null of leeg-string-lid die rij uit van tuple-uniekheid; zet het op False om die leden op te nemen met hun oorspronkelijke Variant-identiteiten; een duplicaat meldt de eerste tuplekolom als celadres en de eerste matchende rij via FirstDuplicateRow

De bestaande irUnique voor één kolom behoudt zijn tekstgebaseerde, hoofdletterongevoelige matchgedrag en slaat ontbrekende of null-waarden over; gebruik AddUniqueRule([Column]) wanneer strikte getypeerde identiteit voor één kolom vereist is

Vergelijkingen tussen kolommen coerceren nooit strings naar getallen, getallen naar Booleans of gewone getallen naar datums; gemengde incompatibele categorieën falen, ook voor icNotEqual; stringvergelijkingen onderscheiden samengestelde en ontbonden Unicode, behouden ingebedde null-tekens en gebruiken kortere-prefix-eerst-volgorde; wanneer SkipBlankValues = False, levert elke lege operand een overtreding tussen kolommen op

Gestructureerde resultaten en correctiewerkmappen

TlxImportViolationRow, Col, SheetNameen Address identificeren de cel, met Address in A1-notatie; ValueText en ErrorText dragen weergave-informatie; RuleName en Kind identificeren de geconfigureerde regel en de faalcategorie; RelatedColumn identificeert de tweede operand bij een fout tussen kolommen en FirstDuplicateRow identificeert de oorspronkelijke rij bij uniciteitsfouten
TlxImportViolationKindivRequired, ivTextLength, ivPattern, ivUnique, ivCallback, ivValueType, ivValueRange, ivCellError, ivFormulaCacheMissing, ivCompositeUniqueen ivCrossColumn onderscheiden de ondersteunde faalcategorieën

Check(Sheet) geeft het aantal overtredingen terug, en ViolationCount plus nulgebaseerde Violation(Index) sommeren het rapport op; één kolomregel meldt zijn eerste falende predicaat, terwijl onafhankelijk geconfigureerde tuple- en vergelijkingsregels extra overtredingen voor dezelfde cel kunnen toevoegen; wijs betekenisvolle Name-waarden toe wanneer aanroepers stabiele toepassingsregel-ID's nodig hebben

Formulecellen worden gevalideerd met hun opgeslagen gecachte waarden; een formule zonder opgeslagen cacheresultaat meldt ivFormulaCacheMissing, en een foutresultaat meldt ivCellError; herbereken expliciet vóór de controle wanneer verse formuleresultaten vereist zijn; validatie benadert geen externe bronnen, wijzigt geen formuledefinities en evalueert geen ongecachte formules

OnVerifyCell behoudt de callbacksignatuur TlxImportVerifyCell en draait na geslaagde toepasselijke kolompredicaten en uniciteitscontroles; hij geeft een Boolean terug en kan een toepassingsfoutmelding zetten; callbacks moeten de werkmap en het validatieschema ongewijzigd laten, en werkmaphandelingen worden geweigerd door de leeslease; callback-exceptions planten zich voort en de lease wordt vrijgegeven voor volgende operaties

Check annoteert nooit, verwijdert geen rijen en materialiseert geen gepakte waarden; gebruik Annotate na de controle om rode fonts toe te passen en fouttekst aan bestaande opmerkingen toe te voegen, of roep expliciet KeepOnlyViolations aan om niet-overtredende rijen te verwijderen en een correctiewerkmap te maken; deze methoden wijzigen het meegeleverde werkblad, dus roep ze aan op de bedoelde werkmap nadat je het rapport hebt bekeken

Validatie leent het werkblad en de werkmap voor de synchrone aanroep; hij neemt het objecteigendom van de aanroeper niet over en vereist geen interface-beheerde werkmap; een leeslease beschermt relevante opgeslagen cel-snapshots en toegang tot opgeslagen formulecaches gedurende de hele controle

TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Beide engines slaan standaard gecachte waarden op en gebruiken xluPromptUser; xluNever en xluAlways wijzigen alleen de updatevoorkeur die in de werkmap wordt opgeslagen en authoriseren of starten nooit externe bestands- of netwerktoegang

Berekeningsaudit en werkmap-hints

function TXLSWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerify(MaxIssues: Integer = 10000): TXLSCalculationAuditReport;
function TXLSWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSXWorkbook.RecalcAndVerifyEx(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.RunCalculationAudit(const Options: TXLSRecalcAuditOptions): TXLSCalculationAuditReport;
function TXLSWorkbook.FormulaIsVolatile(Formula: WideString): Boolean;

function TXLSWorkbook.AuditOverlayHash(SheetIndex, Row, Col: Integer): Integer;
function TXLSWorkbook.AuditOverlayRead(SheetIndex, Row, Col: Integer; var Value: Variant): Boolean;
procedure TXLSWorkbook.AuditOverlayWrite(SheetIndex, Row, Col: Integer; const Value: Variant);
procedure TXLSWorkbook.AuditOverlayClear;

TXLSCalculationAuditIssueKind = (xlcaiCacheMismatch, xlcaiParseFailure,
  xlcaiMissingFunction, xlcaiMissingName, xlcaiUnsupportedArguments,
  xlcaiCircularReference, xlcaiExternalReferenceDenied,
  xlcaiExternalReferenceMissing, xlcaiDataTableSkipped, xlcaiCancelled,
  xlcaiInternalFailure);

TXLSCalculationAuditIssue = record
  Kind: TXLSCalculationAuditIssueKind;
  SheetIndex: Integer;
  SheetName: WideString;
  Row: Integer;
  Col: Integer;
  Formula: WideString;
  Symbol: WideString;
  Expected: Variant;
  Actual: Variant;
  ResultCode: Integer;
  Stack: WideString;
  ExternalTarget: WideString;
end;
TXLSCalculationAuditIssues = array of TXLSCalculationAuditIssue;

TXLSRecalcAuditProgress = procedure(ASender: TObject;
  ACurrent, ATotal: Integer; var ACancel: Boolean) of object;

property WorkbookCodeName: WideString;
property CalculationThreadMode: TXLSCalculationThreadMode;
property ForceFullCalculationState: TXLSOptionalBooleanState;
property RefreshAllOnLoadState: TXLSOptionalBooleanState;
      
RecalcAndVerify bundelt fouten in formulesymbolen en mismatches tussen gecachte waarden in stabiele, gestructureerde categorieën met werkbladcoördinaten, formules, symbolen, verwachte en werkelijke waarden en begrensde afkapping, zonder caches en werkmapsemantiek aan te tasten. RecalcAndVerifyEx voert de diepe audit uit: hij evalueert elke formule één keer via de afhankelijkheidsgrafiek in een geïsoleerde resultaatoverlay, zodat afhankelijke cellen deze pass lezen in plaats van verouderde caches, classificeert evaluatiefouten (niet-ondersteunde argumenten, kringverwijzingen, geweigerde of ontbrekende externe verwijzingen, overgeslagen datatabellen, annulering, interne fouten) met resultaatcodes, legt per fout een begrensde callstack vast, houdt rekening met een probleembudget en een progressie-/annaleersink, en blijft read-only tenzij ApplyResults de herberekende waarden atomair vastlegt na een volledig geslaagde pass over een ongewijzigde werkmapstructuur
AbsoluteTolerance en RelativeTolerance sturen de mismatch-rapportage, niet de tussenliggende berekeningswaarden of het expliciet toepassen van caches Voor numerieke resultaten vereist een mismatch dat de absolute differentie boven AbsoluteTolerance ligt en, wanneer relatieve tolerantie is ingeschakeld, ook boven RelativeTolerance * max(abs(Expected), abs(Actual)) Gelijkheid op een van beide drempels wordt getolereerd; gewijzigde waarden gaan alsnog de auditoverlay in zodat afhankelijke formules de huidige berekening zien, en ApplyResults legt die waarden vast zelfs wanneer hun verschillen niet rapporteerbaar zijn Een read-only audit verandert nooit opgeslagen caches
Elk element van TXLSCalculationAuditReport.Issues is een TXLSCalculationAuditIssue; Kind kiest een van de xlcai* -categorieën, Expected / Actual dragen de vergeleken waarden bij cachemismatches, Stack is de begrensde evaluatiecallchain, weergegeven als Sheet!A1 > Sheet!B2 (buitenste frame eerst), en ExternalTarget beschrijft de externe werkmap bij problemen met externe verwijzingen. TXLSRecalcAuditOptions.OnProgress is een TXLSRecalcAuditProgress -sink die de voortgang van ACurrent / ATotal knooppunten ontvangt en ACancel kan zetten om de audit bij de volgende knooppuntgrens te stoppen met één xlcaiCancelled -probleem
RunCalculationAudit is de engine-ingang waaraan de audit-wrappers op werkmapniveau delegeren, en accepteert hetzelfde optiesrecord. FormulaIsVolatile meldt of een formule bij elke pass een herberekening zou afdwingen (aanroepen zoals NOW, RAND, TODAY, OFFSET, INDIRECTof een onoplosbare verwijzing)
De auditoverlay is een what-if-laag bovenop de celcaches: AuditOverlayWrite slaat een vervangende waarde voor één cel op (werkbladindex vanaf 1, rij en kolom vanaf 0, conform de conventie van de calculator), AuditOverlayRead en AuditOverlayHash bevragen die laag, en AuditOverlayClear maakt haar leeg. Overlaywaarden worden door de normale celwaarde-getters teruggegeven, zodat herberekening en de diepe audit ze zien zonder werkbladcellen te muteren; het legen van de overlay herstelt de opgeslagen waarden
De werkmap-hinteigenschappen behouden de statussen missing, false, true, disabled, automatic en manual waar het bronformaat die ondersteunt; ze starten bij het openen nooit berekenings-, verversings-, bestands-, netwerk- of databasewerk

Tabelformules en IME-status

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Formules in berekende kolommen en totaalrijen houden onafhankelijke array-statussen aan: afwezig, false, true of onbekend, inclusief onaangeroerde lexicale bronwaarden en structurele kolombewerkingen; matrixformules worden door scalaire rij-expansie geweigerd in plaats van stilletjes gewijzigd
IME-modi gebruiken expliciete BIFF- en OOXML-toewijzingen, behouden onbekende bronwaarden en wijzen de waarde disabled, die alleen in OOXML bestaat, af wanneer die voor Classic XLS wordt geschreven
Als u SaveExternalLinkValues op False zet, worden de klassieke XCT - en CRN -records of de sheetDataSet -subboom van het externe boek in XLSX weggelaten, terwijl koppelingsdoelen, werkbladnamen, externe gedefinieerde namen, relaties, formuleverwijzingen, onbekende XML en de in-memory cache behouden blijven; als u de eigenschap in dezelfde werkmap weer op True zet, kan die behouden cache opnieuw worden geserialiseerd
Onaangeroerde, niet-ondersteunde brontokens blijven byte-voor-byte of lexicaal behouden, expliciete toewijzingen geven alleen legale waarden door, ongewijzigde XLSX-onderdelen houden het pad voor gekopieerde gecomprimeerde blokken, en de XLS/XLSX-conversie draagt beide beleidsvormen over; ODS- en tekstwerkmappen hebben geen equivalente verklaring en openen met de standaardwaarden, terwijl behouden DDE- en OLE-koppelingsonderdelen niet worden behandeld als celcaches van externe werkmappen

Inspectie en verwijdering van taakvensters van web-invoegtoepassingen

function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
      
De inspectiemethoden herkennen alleen interne relaties naar de pakketwortel waarvan het type exact overeenkomt met het relatietype van het taakvenster van de web-invoegtoepassing; externe relaties, anders geschreven typen, werkbladrelaties en gelijknamige onderdelen worden genegeerd
Verwijdering valideert eerst de volledige relatiegrafiek, inclusief genormaliseerde doelen, beperking tot de pakketwortel, kringen, ontbrekende onderdelen en resourcelimieten; daarna verwijdert ze alle overeenkomende wortelrelaties en alleen de bereikbare onderdelen die niet met een andere behouden relatie worden gedeeld, samen met de relatieonderdelen die eigendom zijn van verwijderde bronnen
De bewerking is atomair en idempotent, verwijderde brononderdelen kunnen via het opslaan van gekopieerde gecomprimeerde blokken niet opnieuw verschijnen, en de inhoudstypen worden opnieuw opgebouwd vanuit het resterende pakket; misvormde grafieken voegen diagnostische code 1303 toe en veroorzaken een uitzondering vóór de mutatie, terwijl klassieke XLS en ODS False, 0en -1 teruggeven zonder de pakketten te scannen

Weergavebeleid voor werkmapobjecten

TXLSObjectDisplayMode = (xlsodmShowAll, xlsodmShowPlaceholders,
  xlsodmHideAll);

property IXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSXWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSPaginationModel.ExportObjectPlaceholders: Boolean;
property TXLSPDFExport.ExportObjectPlaceholders: Boolean;
property TXLSSvgExport.ExportObjectPlaceholders: Boolean;
property TXLSPageImageExporter.ExportObjectPlaceholders: Boolean;
property TXLSPrintDocument.ExportObjectPlaceholders: Boolean;
property TXLSXHtmlExportOptions.ExportObjectPlaceholders: Boolean;
      
Classic XLS zet de drie statussen af op zijn objectweergaverecord van de werkmap en XLSX op workbookPr.showObjects; ontbrekende waarden vallen terug op xlsodmShowAll, onaangeroerde gereserveerde Classic-payloads en niet-ondersteunde XLSX-tokens blijven verliesvrij, en expliciete toewijzingen schrijven alleen canonieke waarden
De viewer rendert placeholdermodus als lichte kaders met het beschikbare objecttype, de naam, de tekst en de alternatieve tekst; exporteurs behouden standaard volledige objecten, terwijl het zetten van ExportObjectPlaceholders hetzelfde goedkope beleid vraagt zonder afbeeldingspayloads te decoderen of grafiekscènes op te bouwen
xlsodmHideAll voorkomt dat tekeningverzamelingen en objectgedreven bereikexpansie worden opgehaald voordat de rendering begint; werkmapconversie draagt alle drie de statussen over, ODS schrijft volledige tekeningen voor placeholdermodus en laat tekenings- en media-uitvoer weg in hide-all-modus, en werkbladachtergronden blijven onafhankelijk

Renderkalibratiewaarden en momentopnames

TXLSRenderCalibration = record
  WidthCorrection: Double;
  HeightCorrection: Double;
  LineSpacing: Double;
  CellMarginFactor: Double;
  ScreenScaling: Integer;
  MeasurementDpi: Integer;
end;

function XLSDefaultRenderCalibration: TXLSRenderCalibration;
function XLSValidateRenderCalibration(const AValue: TXLSRenderCalibration;
  out AInvalidField: TXLSRenderCalibrationField): Boolean;
      
De standaardwaarden zijn 1, 1, 1, 1, 100 en 96; de breedte- en hoogtecorrecties moeten groter dan nul en kleiner dan twee zijn, de regelafstand is begrensd op (0, 4], celmarges op [0, 4], schermschaling op [100, 500] procent en de meet-dpi op [36, 2400]
Klassieke XLS- en XLSX-werkmappen leggen dezelfde leden RenderCalibration, CaptureRenderCalibrationen ResetRenderCalibration bloot; toewijzing van het volledige record wordt vóór de mutatie gevalideerd, en elke vastlegging geeft een onafhankelijke, per conventie onveranderlijke waardemomentopname terug voor één renderingbewerking

Rendergeometrie en lettertypemeting

TXLSRenderGeometryBackend = (xlsrgbAutoFit, xlsrgbPagination, xlsrgbPdf,
  xlsrgbSvg, xlsrgbBitmap, xlsrgbPrintPreview, xlsrgbViewer, xlsrgbHtml);

TXLSRenderFont = record
  Name: WideString;
  Size: Double;
  Styles: TXLSRenderFontStyles;
  Charset: Byte;
end;

function CreateXLSRenderGeometry(
  const ACalibration: TXLSRenderCalibration;
  AWorkbookGeneration: UInt64;
  ABackend: TXLSRenderGeometryBackend;
  ACacheCapacity: Integer = 4096): IXLSRenderGeometry;

property TXLSHTMLExport.RenderGeometry: IXLSRenderGeometry;
property TXLSXHtmlExportSession.RenderGeometry: IXLSRenderGeometry;
      
IXLSRenderGeometry is eigenaar van één onveranderlijke kalibratie, de werkmapgeneratie, een backend-identiteit, een meetdienst en een begrensde, aan de bewerking gebonden metrische cache; CreateXLSRenderGeometry gebruikt GDI, terwijl CreateXLSPortableCairoRenderGeometry in lxPortableCairo expliciete fontbytes met FreeType/HarfBuzz gebruikt op native Linux of macOS; MeasureText geeft pixelbreedte, hoogte, regelhoogte, ascent, descent en regelaantal terug, terwijl MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPointsen UsableCellWidthPixels de gedeelde geometrieconversies verzorgen
De cache-identiteit omvat backend, werkmapgeneratie, alle kalibratiewaarden, lettertypenaam, exacte grootte, stijlen, tekenset, terugloopbreedte en tekst; breedte- en hoogtecorrectie worden één keer tijdens de tekstmeting toegepast, regelafstand beïnvloedt alleen de hoogte van meerdere regels, celmargecorrectie beïnvloedt alleen de bruikbare tekstbreedte, en schermschaling beïnvloedt alleen de emulatie van de maximale cijferbreedte voor impliciete kolombreedtes
Klassieke XLS en XLSX AutoFit leggen per openbare bewerking één service vast, inclusief de meting van samengevoegde bereiken en de tweefasen- MarkSheet -meting, terwijl TXLSPaginationModel.Build één service vastlegt voor de gekozen RenderBackend; PDF-, SVG-, bitmap-, afdrukvoorbeeld-, werkmapviewer- en HTML-ingangspunten kiezen vóór de uitvoer hun eigen backend, het wijzigen van de werkmapkalibratie kan een bestaande momentopname niet muteren, en de uitvoer schrijft geen werkbladafmetingen
Directe HTML-aanroepen voor werkmap, werkblad en bereik leggen een verse xlsrgbHtml -service vast, terwijl een incrementele TXLSXHtmlExportSession dat één keer in BeginExport doet en die momentopname voor alle werkbladen hergebruikt; beide exporteurs leggen de bewaarde service via RenderGeometry bloot voor kalibratie- en cachediagnostiek
De alleen-lezen IXLSRenderGeometry -eigenschappen WorkbookGeneration, CacheCapacityen CacheEntryCount melden de gebonden generatie en de vulling van de cache voor diagnostiek, en ImplicitWidthMaximumDigitWidthPixels geeft de cijferbreedtemeting achter de emulatie van impliciete kolombreedtes terug
MeasureText vult een TXLSRenderTextMetrics -record (pixelbreedte, hoogte, regelhoogte, ascent, descent en regelaantal) vanuit een TXLSRenderFont waarvan het lid Styles een set TXLSRenderFontStyle -vlaggen is (bold, italic, underline, strikethrough)

Import, codegeneratie, vergelijking en bewaking

TXLSHTMLImportLoadFromHTML -overloads importeren HTML-tabelinhoud uit een stream of bestand in een werkblad, met optionele startcoördinaten, tabelselectie en decimaalteken
TXLSCodeGenLanguage (type TlxCodeGenLanguage: lcgDelphi of lcgCppBuilder) kiest het brondialect van de gegenereerde statements, GenerateToList schrijft gegenereerde werkmapcode naar een stringlist, en TlxCodeGenOptions verbreedt de uitvoer met samengevoegde cellen, kolombreedtes of getalnotaties (cgoMerges, cgoColumnWidths, cgoNumberFormats; werkbladen en cellen worden altijd uitgeschreven)
TXLSXWorkbookCompareCompare vergelijkt getypeerde opgeslagen cellen, formulietekst, bladaanwezigheid en samenvoegingen; Options voegt formulecaches, basiscelstijlen en rij- of kolomgeometrie toe, SetNumericTolerance configureert numerieke gelijkheid, en Count, Diffen Report leggen de geordende resultaten bloot; zie werkmapvergelijking
TXLSFileMonitorIntervalMs kiest het polling-interval en SynchronizeEvent kiest gesynchroniseerde callback-aflevering; een OnFileChanged -handler mag de monitor deactiveren of vernietigen, of FileName wijzigen om een ander bestand te volgen
TXLSCSVLoader and TXLSCSVSaverDe loader parseert tekst met scheidingstekens naar een grid van Variants in het geheugen — ParseFile en ParseStream vullen het grid, CellValue, RowCounten ColCount lezen het terug — met automatisch gedetecteerd scheidingsteken (ValueSeparator) en encoding (TXLSCsvEncoding: systeem-ANSI, UTF-16, UTF-8) en optionele type-promotie via DetectTypes en per-kolom ColumnTypes -items (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbersen FieldWidths verfijnen de afhandeling van vaste breedtes en landinstellingen. TXLSCSVSaver.SaveAs schrijft het grid terug met RFC 4180-quoting, en QuoteAllStrings dwingt quoting af; TXLSTSVSaver is van de saver afgeleid voor tabgescheiden uitvoer

Werkmapvergelijking

TXLSXWorkbookCompare in lxCompare vergelijkt twee TXLSXWorkbook-instanties zonder formules te herberekenen of één van beide werkmappen te wijzigen; bladen worden gekoppeld op hoofdletterongevoelige naam, en het alleen wijzigen van de bladvolgorde levert geen verschil op

De standaardwaarde van Options is leeg en beide toleranties staan standaard op nul; standaardvergelijking meldt toegevoegde of verwijderde bladen, toegevoegde of verwijderde opgeslagen cellen, gewijzigde getypeerde literalwaarden, gewijzigde formulietekst en toegevoegde of verwijderde samengevoegde bereiken

Literaalvergelijking onderscheidt getallen, tekst, Booleans, datums, fouten en lege cellen: het getal 1 verschilt van de tekst '1', een Boolean verschilt van zijn tekstspelling, datums behouden hun eigen type, en fouten worden vergeleken op hun opgeslagen foutcode; numerieke opslagsorten met gelijke waarden vergelijken gelijk, terwijl verschillende Int64-waarden bij exacte vergelijking verschillend blijven

lcoFormulaCachedResultsVergelijkt voor cellen met matchende formulietekst het bestaande gecachte resultaat en onderscheidt een ontbrekende of ongeldig gemaakte cache van een beschikbare cache; geladen en berekende caches met dezelfde getypeerde waarde vergelijken gelijk
lcoCellStylesVergelijkt herleide basisstijlen op matchende opgeslagen celcoördinaten, inclusief fonts, vullingen, verlopen, randen, uitlijning, getalnotaties en celbescherming; niet-gerelateerde invoegvolgorde van de stijlpool creëert geen verschillen, en themakleuren worden herleid tegen het huidige thema van elke werkmap
lcoAxisGeometryVergelijkt effectieve rijhoogten, kolombreedten, verborgen-vlaggen, outline-niveaus, samengevouwen vlaggen en standaarden van het werkblad; een expliciete grootte die gelijk is aan de effectieve standaard vergelijkt gelijk met een impliciete grootte
lcoDefinedNamesVergelijkt namen met werkmap- of werkbladscope, hun formuledefinities, zichtbaarheid, opmerkingen en macrovlaggen; scope volgt werkbladnamen, en invoegvolgorde creëert geen verschillen
lcoDataValidationsVergelijkt validatiedefinities in opgeslagen volgorde, inclusief genormaliseerde doelbereiken, formules, operatoren, prompts, foutmeldingen en controlvlaggen; het wijzigen van de volgorde van doelbereiken binnen één definitie creëert geen verschil
lcoConditionalFormatsVergelijkt definities van voorwaardelijke opmaak in opgeslagen volgorde, inclusief effectieve prioriteit, stop-if-true-gedrag, doelbereiken, formules, differentiële stijlen en ondersteunde instellingen voor kleurschaal, databalk en iconenset; stijlpool- en paletindex-identificatoren worden herleid naar hun semantische waarden
lcoTablesKoppelt tabellen op naam en vergelijkt bereiken, koppen, totalen, stijlinstellingen, opmerkingen, kolomnamen, labels, formules, arrayvlaggen, unieke namen, verbindingsnamen, filtercriteria en sorteercondities; tabel-ID's, kolom-ID's en invoegvolgorde creëren geen verschillen, terwijl kleurfilter- en sorteerdifferentiële-stijl-ID's naar het uiterlijk worden herleid
lcoDrawingsVergelijkt getypeerde tekeningdefinities in tekenvolgorde, met behoud van volgorde van groepskinderen en van plotgroepen in grafieken; ondersteunde canonieke definities dekken afbeeldingen, tekstvakken, grafieken, groepen, complete getypeerde slicer-views en getypeerde timeline-views, waarbij ondoorzichtige of niet-ondersteunde tekenknooppunten EXLSSemanticSnapshot geven
lcoBlankStyleRegionsVergelijkt herleide basisstijlen over coördinaten zonder opgeslagen cel aan weerskanten, inclusief werkbladstandaarden en virtuele stijloverlays; equivalente rechthoekige onderverdelingen vergelijken gelijk, en gelijke aangrenzende wijzigingen smelten samen tot rechthoeken zonder cellen te materialiseren
lcoRichTextRunsVergelijkt effectieve runfonts en tekst op matchende opgeslagen tekstcellen, neemt het basisfont over voor weggelaten run-eigenschappen, negeert lege runs en voegt aangrenzende runs met gelijke effectieve fonts samen; platte tekst matcht een gelijkwaardige rich-textrun met standaardfont
lcoPivotTablesKoppelt getypeerde PivotTable-definities op naam en vergelijkt bronbindingen, layout, velden, geordende viewleden, gegevensaggregaties, filters, groeperingsverwijzingen, berekende definities, stijlen en vlaggen van native materialisatie; cache- en shared-member-ID's worden herleid naar bronidentiteiten en getypeerde waarden
lcoPivotCachesKoppelt lokale getypeerde PivotCache-definities op bronidentiteit en vergelijkt refresh-metadata, veldmetadata, gegroepeerde labels en bereiken, ongeordende shared-member-domeinen en geordende getypeerde recordwaarden; numerieke, tekst-, Boolean-, datum-, fout- en lege leden blijven onderscheiden, datums behouden binary64-precisie, en cache-ID's en shared-member-slotvolgorde creëren geen verschillen
lcoSlicerStateKoppelt benoemde slicer-views en -caches, inclusief tabelkolom- of niet-OLAP-Pivot-bindingen, verbonden PivotTable-namen, getypeerde ledenselecties, cross-filter- en sorteersettingen, bijschrift, scrollpositie, kolomlayout, afmetingen, stijl, lock- en bijschriftvlaggen en ankergeometrie; bindingen herleiden tabel-, kolom-, blad- en cache-ID's
lcoTimelineStateKoppelt benoemde getypeerde timeline-views en lokale niet-OLAP-caches, inclusief bronveld- en verbonden PivotTable-bindingen, actieve datumselectie, bijschrift, niveau en werkbladen grenzen; inactieve selecties laten ongebruikte datumeindpunten weg

Options heeft type TlxCompareOptions, een verzameling van TlxCompareOption; het inschakelen van een optie voegt zijn verschillen toe aan de standaardvergelijking

SetFeatureLimits(MaxBytes, MaxItems) valideert beide positieve limieten vóór het wijzigen van een van beide instellingen; MaxFeatureBytes staat standaard op 64 MiB en MaxFeatureItems op 1.000.000, en de individuele setters behouden dezelfde atomische validatie

Featurebudgetten dekken de geaggregeerde losse canonieke bytes en getelde entries uit beide werkmappen, inclusief rich-textruns, XML-knooppunten van filters, Pivot-velden, domeinleden en recordwaarden, en slicer- of timeline-verbindingen; readers controleren aantallen en grote tekstinvoer vóór het bouwen van native XML, dwingen begrensde uitvoerstromen af en geven EXLSXSemanticBudget wanneer een limiet wordt overschreden

SetNumericTolerance(AbsoluteTolerance, RelativeTolerance) valideert beide argumenten vóór het wijzigen van een van beide instellingen; beide moeten eindig en niet-negatief zijn, en de individuele setters AbsoluteTolerance en RelativeTolerance gebruiken dezelfde validatie

Numerieke literaalwaarden en numerieke cachewaarden vergelijken gelijk wanneer hun absolute verschil hooguit AbsoluteTolerance is, of wanneer hun verschil ten opzichte van de grotere absolute waarde hooguit RelativeTolerance is; een drempel van nul behoudt exacte gelijkheid, de relatieve berekening voorkomt overflow bij extreme tegengestelde waarden, en tolerantie coerceert geen tekst en past niet toe op datums, stijlen of geometrie

LeftName en RightName zetten optionele weergavenamen die door Report-regels worden gebruikt, met standaard left en right; de namen raken alleen de rapportage, niet de bladkoppeling of de vergelijking

Comparer := TXLSXWorkbookCompare.Create;
try
  Comparer.Options := [lcoFormulaCachedResults, lcoCellStyles,
    lcoAxisGeometry];
  Comparer.SetNumericTolerance(0.001, 0.000001);
  DifferenceCount := Comparer.Compare(LeftWorkbook, RightWorkbook);
  for I := 0 to DifferenceCount - 1 do
  begin
    Entry := Comparer.Diff(I);
    ReportLines.Add(Entry.Describe);
  end;
finally
  Comparer.Free;
end;

Compare geeft het aantal verschillen terug, Count leest dat aantal daarna, en Diff(Index) gebruikt nulgebaseerde indexering om een door de comparer beheerde TlxCompareDiff terug te geven; houd de comparer vast tijdens het lezen van zijn entries en verkrijg de entries opnieuw na een andere geslaagde vergelijking

Elke entry biedt Kind, Sheet, 1-based Row en Col waar van toepassing, Ref, LeftText, RightText en getypeerde LeftKind- / RightKind-waarden; TlxCompareValueKind bevat lcvNone, lcvBlank, lcvNumber, lcvText, lcvBoolean, lcvDateTime, lcvError en lcvFormula, waarbij lcvNone wordt gebruikt voor een afwezige kant of een niet-waarde-verschil

TlxCompareKind behoudt lckSheetAdded, lckSheetRemoved, lckCellAdded, lckCellRemoved, lckValueChanged, lckFormulaChanged, lckMergeAdded en lckMergeRemoved, en voegt lckFormulaCacheChanged, lckStyleChanged, lckRowGeometryChanged en lckColumnGeometryChanged toe

Stijlverschillen dragen stabiele canonieke stijlvingertypen in LeftText en RightText; geometrieverschillen dragen de vergeleken grootte, verborgen-, outline- en samengevouwde status, met Ref die het betrokken aaneengesloten asinterval identificeert, Row gezet op zijn eerste rij en Col op nul voor rijen, of Col gezet op zijn eerste kolom en Row op nul voor kolommen

Featureverschillen gebruiken lckDefinedNameChanged, lckDataValidationChanged, lckConditionalFormatChanged, lckTableChanged, lckDrawingChanged, lckPivotTableChanged, lckPivotCacheChanged, lckSlicerChanged of lckTimelineChanged; Change is lccChanged, lccAdded of lccRemoved, en elke aanwezige kant draagt zijn canonieke definitievingerprint terwijl een afwezige kant een lege string draagt

lckRichTextChanged identificeert een gewijzigde rundefinitie op zijn celcoördinaat en draagt canonieke runvingertypen in LeftText en RightText; numerieke tolerantie geldt voor celliterals en formulecaches, terwijl getypeerde featuredefinities exact worden vergeleken

Featureverwijzingen identificeren scoped namen of tabelnamen, of gebruiken 1-based sequentieposities voor validatie-, voorwaardelijke-opmaak- en tekeningdefinities; het invoegen of verplaatsen van een geordende feature kan meerdere posities wijzigen, terwijl naamentries op werkmapniveau een lege Sheet hebben

lckBlankStyleRegionChanged identificeert een gewijzigde lege rechthoek via Row, Col, inclusieve LastRow en LastCol en zijn A1-Ref; opgeslagen coördinaten worden afgehandeld door gewone celvergelijking en lcoCellStyles, dus schakel beide stijlopties in om opgeslagen cellen en lege gebieden samen te inspecteren

Describe formatteert één entry, terwijl Report(List) de geformatteerde entries toevoegt aan een door de aanroeper beheerde TStrings; een getypeerde waardewijziging bevat typelabels wanneer de typen verschillen, en resultaten sorteren op bladnaam, rij, kolom, verschilsoort en verwijzing in plaats van op celinvoegvolgorde

Vergelijking houdt leesleases vast, loopt over opgeslagen cellen via losse cursorsnapshots en behoudt gepakte opslag; geometrie partitioneert grenzen van opgeslagen metadata en compacte herhaalde-rij-spans, terwijl vergelijking van lege-stijlen actieve rechthoek- en opgeslagen celgrenzen doorzoekt zonder een rechthoekig raster van een miljoen rijen te scannen; het werk groeit met opgeslagen features, regiointersecties en gerapporteerde verschillen

Een mislukte vergelijking behoudt het vorige geslaagde resultaat; ongeldige tolerantietoewijzing behoudt ook de bestaande instellingen en het resultaat, terwijl het doorgeven van een nil-werkmap het resultaat wist en nul teruggeeft

Deze vergelijking dekt de opgeslagen celinhoud van de XLSX-facade en geselecteerde getypeerde featuredefinities; spelling van naam-, validatie-, voorwaardelijke-opmaak-, tabel- en grafiekformules normaliseert via de semantische formulieparser, terwijl Pivot-berekende formules hun opgeslagen definitietekst behouden

Tabelfilters accepteren ondersteunde custom-, waarde lijst-, datumgroep-, kleur-, icoon-, dynamische- en top-count-vormen plus sorteercondities; onafhankelijke filterkolommen en waardeset-entries normaliseren hun volgorde, Booleaanse standaarden en numerieke spellingsvormen normaliseren, en sorteerconditievolgorde blijft significant

Getypeerde Pivot-, slicer- en timelinevergelijking herleidt ondersteunde lokale werkbladbronnen en niet-OLAP-bindingen zonder te verversen of beschikbaarheid te evalueren; native slicer-beschikbaarheidshints zijn afgeleide weergavemetadata, terwijl ledenselecties en herkende native sorteer-metadata worden vergeleken

Ondoorzichtige native tekeningeigenschappen, onvolledige binaire Pivot-modellen, externe of OLAP-Pivot-bronnen, rauwe PivotTable-supplementrecords en extensie-XML, onbekende filter-XML en niet-gemodeleerde slicer- of timeline-extensieattributen of -kinderen geven EXLSSemanticSnapshot; behoud van dergelijke gegevens impliceert geen semantische gelijkheid

Geselecteerde geïmporteerde PivotTable- en PivotCache-features valideren behouden native XML ook vóór het vergelijken van de getypeerde projectie, inclusief geneste veldmetadata en cacherecords; onbekende namespaces, attributen, kinderen en extensiepayloads falen expliciet binnen dezelfde coöperatieve featurelimieten, terwijl gemodelleerde slicercache-bindingen ondersteund blijven

TSimpleDomNode.RawName legt de oorspronkelijke element-QName bloot naast de door de reader genormaliseerde Name, zodat namespacegevoelige inspectie mogelijk is zonder de bestaande naammatching van de parser te wijzigen

Werkmapinstellingen en ondoorzichtige pakketmetadata blijven buiten de vergelijking; basisstijlvergelijking evalueert geen uitstraling van voorwaardelijke opmaak of tabelstijlen, en tekeningvergelijking behoudt de ondersteunde afbeeldings-, tekstvak-, grafiek- en geordende-groepsgrenzen van de semantische momentopname

Effectieve rich-text-eigenschappen

TMsoFbtOpt.StoredPids geeft opgeslagen OfficeArt-propertyidentificatoren terug in gesorteerde volgorde, terwijl TMsoFbtSp.PersistentFlags native shapevlaggen blootlegt zonder properties of ankers toe te wijzen

TMsoShapeContainer.HasPreservedObjectData identificeert bewaarde OBJ-staartbytes; HasOrdinaryEmbeddedPictureObjectData controleert dat afbeeldingsstaarten alleen herkende clipboardformat- en nul-afbeeldingsvlagrecords bevatten, en wijst gekoppelde of onbekende records af zonder de payload te kopiëren

TMSOShapeTextBox.HasValidTextRuns controleert opgeslagen TXO-rungrenzen en gereserveerde velden zonder runs te maken; TMsoDrawing.HasUnmodeledAppearance identificeert native tekeninggegevens die de getypeerde parser overslaat, zodat capture onopgeloste uitstraling expliciet kan afwijzen

TXLSXRichTextRun.BoldSet, ItalicSet, StrikethroughSet, UnderlineSet, VertAlignSet en ColorSet onderscheiden overgeërfde fonteigenschappen van expliciete overrides, inclusief false-vlaggen, none, baseline en automatische kleuren; setters markeren de eigenschap als expliciet, ook wanneer zijn waarde gelijk is aan de initiële standaard van de nieuwe run

TXLSXRichText.HasUnsupportedAppearance meldt native rich-eigenschappen die het getypeerde runmodel niet kan representeren; draagbare capture en effectieve rich-text-vergelijking wijzen dergelijke runs expliciet af, terwijl ondersteunde shared/inline run-eigenschappen en witruimte hun geïmporteerde semantiek behouden

Effectieve rich-text-vergelijking past expliciete false-overrides toe vóór het samenvoegen van aangrenzende gelijke runs; overgeërfde en expliciet gewiste eigenschappen blijven onderscheiden tijdens deduplicatie van shared strings en ondersteunde XML-roundtrips

TXMLReader.ResolveNamespaceUri(Prefix, Uri) herleidt de huidige in-scope namespacebinding zonder de lezerpositie te wijzigen en geeft false terug wanneer er geen binding bestaat; een leeg prefix vraagt de standaardnamespace, en rauwe QNames blijven beschikbaar voor namespacegevoelige inspectie

De onveranderlijke rich/scene-records, de capture-source-extensie en het HXRSNP02-overdrachtcontract worden beschreven in Draagbare headless uitvoer

Losse stijl- en asinspectie

TXLSXWorksheet.ReadSemanticCellStyle(Row, Col) geeft een losse TXLSSemanticCellStyle terug voor geldige 1-based coördinaten, met herleiding van opgeslagen en gepakte stijlen, werkbladstandaarden, toepasselijke stijloverlays, impliciete datumnotaties, geïndexeerde kleuren en themakleuren zonder cellen te materialiseren of stijlpools te wijzigen; de publieke aanroep verkrijgt een leeslease en sluit regels voor voorwaardelijke opmaak en tabelstijlen uit

TXLSXWorksheet.GetStoredAxisSpans(IsRow) geeft TXLSXAxisSpans terug, een array van TXLSXAxisSpan-records met inclusieve 1-based FirstIndex en LastIndex; hij rapporteert de metadata-voetafdruk van grootte, verborgen, outline en samengevouwen, behoudt compacte herhaalde-rij-hoogtespans en laat de effectieve standaard van het werkblad beschikbaar via zijn gewone eigenschappen

De teruggegeven spans beschrijven opgeslagen metadata-voetafdrukken in plaats van een disjuncte genormaliseerde partitie; toepassingen die twee assen vergelijken kunnen hun eerste en laatste grenzen combineren en daarna de effectieve status één keer per resulterend interval inspecteren

TXLSXWorksheet.GetStoredStyleRegions geeft losse TXLSXStyleRegions terug met inclusieve FirstRow-, FirstCol-, LastRow- en LastCol-grenzen voor compacte virtuele opmaakvoetafdrukken; deze voetafdrukken kunnen overlappen, en aanroepers lezen hun effectieve uitstraling met ReadSemanticCellStyle

TXLSXWorkbook.ReadSemanticFeatures(Kind, Sheet, MaxBytes, MaxItems) geeft losse TXLSXSemanticFeatures-entries terug met een stabiele Key, canonieke Definition-bytes en getelde ItemCount; optionele positieve limieten staan standaard op 64 MiB en 1.000.000 entries

TXLSXSemanticFeatureKind bevat xlsxSemanticDefinedNames, xlsxSemanticDataValidations, xlsxSemanticConditionalFormats, xlsxSemanticTables, xlsxSemanticDrawings, xlsxSemanticPivotTables, xlsxSemanticPivotCaches, xlsxSemanticSlicers, xlsxSemanticSlicerCaches, xlsxSemanticTimelines en xlsxSemanticTimelineCaches

Gedefinieerde namen en de drie cachersoorten gebruiken werkmapbrede scope en staan een nil-werkblad toe; de andere soorten vereisen een werkblad dat bij de werkmap hoort, regels en tekeningen behouden hun opgeslagen volgorde, en teruggegeven arrays en buffers zijn kopieën in beheer van de aanroeper; deze readers verkrijgen leesleases en erven de getypeerde dekking en het expliciete gedrag voor niet-ondersteunde gegevens zoals hierboven beschreven

TXLSXWorksheet.ReadSemanticRichText(Row, Col, IncludePlainText, MaxBytes, MaxItems, ConsumedItems) geeft losse canonieke runbytes terug voor 1-based coördinaten, of een lege buffer wanneer er geen rich text bestaat en IncludePlainText false is; de optionele ConsumedItems: PInteger ontvangt het aantal vastgelegde runs, en platte tekstcapture behoudt gepakte opslag

TXLSPivotCacheField.GroupItemTypes[Index] legt de getypeerde soort bloot die hoort bij GroupItemLabels[Index] en wijst een index buiten het opgeslagen gegroepeerde-labeldomein af

Formulemetadata en Pivot-query-callbacks

TXLSGetCellFormulaText en TXLSCalculator.OnGetCellFormulaText lezen opgeslagen expressietekst met een 1-based SheetIndex en nulgebaseerde Row/Col, geven lxOk of een getypeerde foutcode terug en respecteren formuleverborgen-bescherming; TXLSGetPivotTable en OnGetPivotTable lokaliseren een geleende tabel met 1-based SheetIndex en nulgebaseerde bereikcoördinaten

De werkmap-engines koppelen deze optionele callbacks aan in normale, alleen-lezen en geïsoleerde berekeningscontexten; callbacks herberekenen geen doelen, verversen geen Pivot-bronnen en dragen geen eigendom over

TXLSPivotDataConstraint slaat een FieldName en getypeerde Item op, met TXLSPivotDataConstraints die veld-/itemparen verzamelt; TXLSPivotTable.GetDataValue bevraagt één zichtbaar ondersteund aggregaat uit een losse lokale tabel-/cache-snapshot en IntersectsQueryRange gebruikt 1-based werkbladen grenzen inclusief gemodelleerde rapportfiltercellen

TlxPivotQueryBudget ontvangt werk- en geheugenschattingen synchroon en geeft terug of evaluatie kan doorgaan; EXLSPivotQueryBudget en EXLSPivotQueryUnsupported onderscheiden uitgeputte limieten van niet-ondersteunde cache- of aggregaatomodellen

TXLSPivotCache.QueryModelIsComplete registreert de gereedheid van gedecodeerde query's los van de volledigheid van rauwe BIFF-replay; QueryRecordsValid legt de geldigheid van geïmporteerde records bloot en SetQueryRecordValidity past de precedentie van de formatreader toe zonder records te verversen

Expliciete codepagina-bytes

LidContract
XlsEncodeCodePage(Text, CodePage, MaxBytes = -1)Geeft een RawByteString terug met exacte bytes in een expliciete, niet-nul bytegeoriënteerde pagina, behoudt ingebedde nulls, verifieert de Unicode-roundtrip-identiteit en geeft EConvertError bij niet-representeerbare tekst; een niet-negatieve MaxBytes houdt het langste volledige-teken-prefix dat past, terwijl -1 de lengte onbegrensd laat; validatie dekt de oorspronkelijke tekst vóór afkapping
XlsDecodeCodePage(Bytes, CodePage)Geeft een WideString terug uit de expliciete bytecodering en behoudt ingebedde nulls; misvormde bytesequenties volgen het gedrag van de geïnstalleerde decoder; pagina 0 en UTF-16-pagina 1200 worden geweigerd omdat deze API geen ANSI-locale afleidt en geen UTF-16-bytestroom behandelt
TXLSBlob.GetCompressedUnicodeString(Index, Count)Geeft exacte BIFF8 gecomprimeerde Unicode U+0000 tot en met U+00FF code-eenheden terug, behoudt ingebedde nulls, valideert het gevraagde bytebereik en interpreteert die bytes niet met een codepagina
TXLSBlob.AddRawStringVoegt exacte gecodeerde bytes toe zonder een AnsiString-codepaginaconversie en werkt DataLength bij; een lege invoer voegt geen bytes toe
TXLSCalculator.CodePage, TXLSFormula.FCodePageKiezen de expliciete legacy-formulebytecodering, met standaard CP1252; de bezittende classic-werkmap synchroniseert zijn calculator bij initialisatie of wanneer SetCodePage wordt aangeroepen
TXLSFontList.GetFont, TXLSNumFormatList.GetNumFormatBlob, TXLSStyles.GetStyleBlobHet optionele CodePage-argument staat standaard op 1252 en codeert BIFF5-tekst; BIFF8-uitvoer blijft Unicode
TMsoDrawing.StoreNotesHet optionele CodePage-argument staat standaard op 1252 en codeert opmerkingsvormen uit vóór-Unicode; de bestaande recordgroottelimiet voor gewone BIFF5-opmerkingen blijft gelden; dit voegt geen auteur-, rich-text- of geometrievelden toe die ontbreken in dat recordformaat
TXLSCustomName.SetSourceDataDe optionele argumenten FileFormat en CodePage identificeren geïmporteerde rauwe NAME-bytes en staan standaard op xlExcel97 en 1252; rauwe records worden alleen hergebruikt wanneer hun formaat en legacy-encodering matchen met de gevraagde uitvoer
TXLSFormulatArrayItem.GetDataSize, TXLSFormulatArray.GetDataSize, TXLSFormulatArray.GetData, TXLSFormulatArrays.GetDataSize, TXLSFormulatArrays.GetData, TXLSCompiledFormula.GetExternalDataHet optionele ACodePage-argument staat standaard op 1252; legacy string-array-grootte en -uitvoer gebruiken hetzelfde aantal gecodeerde bytes, terwijl BIFF8-strings Unicode blijven

Geef de teruggegeven RawByteString rechtstreeks door aan AddRawString of een bytegeoriënteerde streamoperatie; het converteren naar een standaard AnsiString kan zijn bytes op native FPC-systemen hercoderen

Classic gedefinieerde namen en matrixformuleblokken

TXLSCustomName deferred compilationClearDefinition geeft de gecompileerde RefersTo-AST vrij terwijl de opgeslagen definitiestring en eventuele rauwe geïmporteerde NAME-bytes behouden blijven, Compile herbouwt de AST uit de opgeslagen definitie en meldt succes, en GetCompiledFormula compileert automatisch opnieuw, zodat een gewiste naam bij zijn volgende lezing opnieuw wordt herleid; PeekCompiledFormula geeft de huidige AST terug zonder die hercompilatie te triggeren, en StoredDefinition legt de ongeparseerde definitiebron bloot
TXLSCustomName identity and flagsStoreIndex legt de opslagpositie van de naam binnen zijn verzameling bloot, NameID zijn op de werkmap unieke numerieke identiteit zoals gebruikt door de berekeningsengine, en IsHidden en IsMacro lezen en schrijven de verborgen- en macrovlaggen van het BIFF NAME-record
TXLSFormulatArray.RowsCount, ColsCountMelden de rij- en kolomomvang van het geparseerde matrixformuleblok; beide beginnen bij één en begrenzen het per-cel itemdomein dat de emission-methoden dragen

Classic font-, formaat- en stijlpools

TXLSFontList stored font attributesGeïndexeerde eigenschappen spiegelen de opgeslagen fontsleutel op een nulgebaseerde lijstindex: Name, Size, ColorIndex, Bold, Italic, Strikethrough en Underline gaan samen met OutLineFont, Shadow, SubScript, SuperScript, Family en CharSet voor read-only inspectie
TXLSNumFormatList.AddValue, FmtExistsAddValue registreert een formaatstring en geeft zijn index terug, mapt ingebouwde formaatspellingsvormen op hun canonieke ID's en markeert datum- en tijdformaten; FmtExists meldt of een custom formaatstring al is geregistreerd
TXLSNumFormatList.IsDateFormat, IsDateFormatValueIsDateFormat meldt of het formaat dat op een index is opgeslagen als datum- of tijdformaat is gemarkeerd, terwijl IsDateFormatValue een formaatstring rechtstreeks op datum- en tijdtokens test
TXLSStyles.AddStyle, AddBuiltinStyleAddStyle registreert een benoemde custom celstijl gebonden aan een XF-recordindex, en AddBuiltinStyle registreert een ingebouwde celstijl op zijn ingebouwde ID samen met het outline-niveau dat door rij- en kolomniveaustijlen wordt gebruikt
TXLSStyles.BuiltinStyleNameKlassefunctie die de canonieke Excel-weergavenaam van de ingebouwde celstijl teruggeeft voor ingebouwde ID's 0 tot en met 53; ID's buiten het bereik geven een lege naam terug, zodat writers teruggrijpen op de rauwe builtin-bytevorm

Helpers voor pakket- en binaire opslag

TXLSXOpaquePackageLoadWorkbookXmlMetadata legt de XML-status op werkmapniveau vast, MarkAllPartsClean zet dirty-vlaggen terug, en WorkbookExtLstXml samen met WorkbookRootAttributesXml legt de behouden XML-fragmenten van de werkmap bloot; IsDiscardedPart meldt of een onderdeelnaam is verwijderd door een verwijderbewerking zoals het opschonen van web-invoegtoepassingen
TXLSFileStorageLoad, LoadFolder, Writeen WriteFolder dragen samengestelde bestandsinhoud over; Child en Count sommen onderliggende items op, elk een TXLSFileItem — een benoemd opslagknooppunt waarvan de subklasse TXLSFileStream de opgeslagen bytes als TXLSBlob draagt, met DataSize als melding van de payloadlengte
TXLSBlobAdd voegt een andere blob toe, terwijl AddByte, AddWord, AddLong, AddDouble, AddStringen AddWideString getypte waarden toevoegen; CopyData, CopyMem, FillByte, Write, Clear, Reseten Dump beheren de inhoud; Buff en DataLength leggen de opslag bloot
TXLSBlobListAppend, AppendList, CopyDataen Write combineren items of geven ze uit; Entries en TotalSize leggen de lijststatus bloot
TXLSWideStringBuilderAddString voegt tekst toe en Length meldt het opgestapelde tekenaantal

Toevoegingen voor tekeningen en werkmapviewer

TXLSFillFormatPictureFill configureert een op een afbeelding gebaseerde vormvulling, terwijl FillType de vulsoort kiest (effen kleur, verloop, afbeelding of vooraf ingestelde textuur) die de writer uitschrijft
TXLSShapesAddScrollBar en AddSpinner maken formulierbesturingselementen — de teruggegeven objecten TXLSScrollBar en TXLSSpinner leggen de geometrie van het besturingselement en de gekoppelde cel bloot, en de spinner voegt de staplimieten Min, Maxen Inc toe — terwijl RegisterScrollBar en RegisterSpinner besturingselementen registreren die uit een werkmap zijn geladen
TXLSWorkbookViewerCanUndo en CanRedo melden de beschikbaarheid van de transactiegeschiedenis; ClearSelectedRange, CopySelectedRange, PasteSelectedRangeen PasteText opereren op het geselecteerde bereik, terwijl ReferencePickMode interactieve selectie van cel- of bereikverwijzingen mogelijk maakt
TXLSWorkbookEditHistoryDe headless inhoudstransactie-engine in lxWorkbookViewer bindt een geleende classic- of XLSX-werkmap en biedt bereikbeschermings-preflight, Unicodetekst-kopiëren-en-plakken, bereikwissing en één undo/redo-transactie per operatie; zie headless bewerkingstransacties
TXLSCellContentSnapshotBeide werkbladklassen stellen ReadCellContent(Row, Col) en RestoreCellContent(Snapshot) bloot voor losse native content-capture en herstel op 1-based coördinaten in het oorspronkelijke werkblad; capture evalueert geen formules, maakt geen afwezige cellen aan en materialiseert geen gepakte opslag, en de onveranderlijke NativeData-payload behoudt rich text, formulecaches en celstijl; direct herstel is een operatie op laag niveau waarvan de aanroeper bescherming en structurele grenzen moet valideren

Paginering, beelduitvoer en afdrukken

XLSValidateCachedChartSceneModel, XLSRecordCachedChartScenePreflight gecachte grafiekmetadata zonder cellen te herleiden en registreert begrensde vector- en tekstprimitieven voor een losse grafiek in lxPortableChart, met TXLSPortableSceneObjects en item-, byte- en tekstaccounting als retour; de lxPagination-ingangspunten behouden dezelfde gedeelde implementatie voor bestaande Windows-aanroepers; de huidige subset dekt gewone kolom-, staaf-, lijn-, spreidings-, cirkel-, donut- en single-series-oppervlaktegrafieken met één primaire plotgroep, en registratie vereist gevalideerde native metadata, eindig en strikt geordende cachepunten en een niet-gekoppeld grafiekmodel; zie registratie van gecachte grafieken
TXLSGraphicsBackendDrawTiledImage tekent een werkbladachtergrond herhaaldelijk over de afgeknipte paginaregio
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBordersen PaintPageBackground sturen de pagina-inhoud; RenderDPI, RenderColorModeen RenderSession leggen de uitvoerresolutie, kleurafhandeling en de actieve rendersessie bloot
TXLSCellImageExporterMeasure berekent pixeldimensies voor klassieke of XLSX-bereiken; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPainten PaginationModel configureren en observeren de rendering
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColoren TransparentBackground passen dezelfde paint-hooks en uitvoerveiligheidslimieten toe op gepagineerde beeldexport
TXLSPrintDocumentPrintWorksheet, PrintWorkbooken PrintAllVisibleSheets sturen klassieke of XLSX-inhoud naar de VCL-printer; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPageen OnAfterGeneratePage sturen de afdruktaak aan

Klassieke grafiekmodellen en grafiekobjecten op werkbladen

TXLSXChartSeriesLineVisible, LineColorRGBen LineWidthPoints beschrijven een onafhankelijke seriestreep; LineStyleSet, LineColorSeten LineWidthSet behouden expliciete instellingen, en EffectiveLineVisible herleidt de legacy-conventie van alleen-vulling; MarkerFillSet en MarkerBorderSet onderscheiden expliciet zwart van automatische markerkleuren, terwijl lijn- en spreidingsportable-registratie cirkeldiameters van 2 tot en met 72 punten ondersteunt; kleur- en breedtesetters valideren vóór mutatie en gehoorzamen leesleases van de werkmap
TXLSChartSeriesAddTrendline en AddErrorBars maken getypeerde serie-annotaties, terwijl TrendlineCount en ErrorBarCount de omvang van die verzamelingen melden; het bestaande veld MarkerSize behoudt rauwe BIFF-twips, terwijl de read-only getter MarkerSizePoints die waarde gedeeld door 20 teruggeeft, inclusief fractionele puntgroottes
TXLSChartAxisHasAxcExtFlag toetst één ruwe AXCEXT-vlag zonder dat aanroepers het bitmasker zelf moeten decoderen
TXLSChartModelAxisGroupCount meldt het aantal primaire en secundaire asgroepen dat uit de grafiek is gedecodeerd
TXLSCustomChartAddAreaData voegt een kant-en-klaar area-item toe voor het herbinden van formules bij het opslaan en ApplyDateAxisModel past een getypeerd datumasmodel toe op de ruwe grafiekrecords; GetStoredRecordInfo leest een nulgebaseerd record-ID en byteaantal zonder toewijzing, terwijl ReadStoredRecord(Index, MaxBytes) de bytelimiet controleert vóór het teruggeven van losse bytes in TXLSChartStoredRecord, zonder formules te evalueren of caches te wijzigen
TXLSWorksheetAddChartObject verankert een grafiekkader op het werkblad en koppelt het aan de gedeelde grafiekbouwer
TXLSXChartLayoutResolverTryResolve lost één lay-outrechthoek op met optionele groottevalidatie en ResolveChart berekent de rechthoeken van grafiek, titel, legenda, plot en assen

Getypeerd grafiek-decodemodel

De gedecodeerde grafiekstatus wordt als gewone records en enums blootgelegd, zodat inspectiecode nooit door ruwe BIFF-records hoeft te lopen: TXLSChartInfo draagt de gedecodeerde grafieksamenvatting met TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), elke serie meldt een TXLSChartSeriesType, en TXLSChart3DState samen met TXLSChart3DInfo beschrijven driedimensionale weergaven. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) en TXLSChartLegendPosition classificeren assen en legenda's, terwijl het datumasmodel TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) en TXLSChartDateValuesgebruikt. TXLSCustomChart legt het gedecodeerde model via TXLSChartInfobloot; trendlijn- en foutbalkannotaties zijn getypeerde objecten (TXLSChartTrendline, TXLSChartErrorBars) die vanaf elke serie bereikbaar zijn

Grafiek-authoringrecords

Authoring van grafiekbladen en via de bouwer accepteert gewone records in plaats van objectgrafen: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfoen TXLSChartSeriesStyleInfo vullen de serie-items die naar TXLSWorksheets.AddChartSheet en de gedeelde grafiekbouwer gaan, en TXLSPivotChartInfo beschrijft de pivot-chart-framing die wordt gebruikt wanneer een grafiek aan een draaitabel wordt gekoppeld

Inspectie van classic grafiekvullingen

TXLSCustomChart.GetChartModel decodeert ondersteunde native OfficeArt-propertytabellen en tertiaire propertytabellen in GelFrame-records, inclusief eigenschappen die volgen op complexe payloadentries; de bestaande bouwerrepresentatie blijft ondersteund, en misvormde tabelgrenzen laten de eerdere getypeerde vulling ongewijzigd en melden het niet-ondersteunde record

Grafiekinspectie valideert de volledige opgeslagen tekst- en annotatiepayload vóór het toevoegen van getypeerde status: afgekapte trendlinenamen of scheidingstekens van datalabels melden hun record-ID via _UnsupportedSemanticRecordID, terwijl nil of te kleine SeriesText-headers dat record als niet-ondersteund melden voor zowel BIFF5 als BIFF8; een gedeclareerde series-text-omvang die zijn payload overschrijdt geeft EReadError, geeft het partieele model vrij en laat de opgeslagen grafiekrecords ongewijzigd

De marker-getter en de vullinginspectie behouden rauwe grafiekopslag; het pad voor vastgelegde uitstraling-capture valideert apart ondersteunde core-grafieken, terwijl ongeverifieerde checksums van uitgebreide titel- of shape-extensies niet-ondersteund blijven

Begrensde readers voor opgeslagen grafieken, strings en fonts

TXLSChartStoredBytes is een losse byte-array en TXLSChartStoredRecord bevat RecordId en Data; deze readers inspecteren bewaarde bronopslag zonder een gedecodeerd grafiekmodel te maken of formules te evalueren

TXLSCustomChart.GetStoredRecordInfoGeeft een record-ID en getelde bytelengte terug voor een nulgebaseerde recordindex zonder zijn payload te kopiëren
TXLSCustomChart.ReadStoredRecordKopieert één payload na validatie van de index en de niet-negatieve MaxBytes; de standaard bytelimiet is High(Int64)
TXLSCustomChart.ReadStoredFormulaLeafInfoInspecteert een samenhangend opgeslagen BRAI-blad met de exacte broncalculator en niet-negatieve byte- en tekstquota; vreemde calculators of vertaaleigenaren geven een niet-ondersteund blad terug, en AllowUnboundBiff staat standaard op False
TXLSCustomChart.ReadStoredFormulaLiteralGeeft pas een losse literal terug nadat dezelfde proveniëntie- en quotacontroles zijn geslaagd; een niet-ondersteund blad geeft EInvalidOperation
TXLSCustomChart.SourceBiffVersion, SourceCodePageRead-only proveniëntie van de bewaarde grafiekrecords
TXLSStringTable.GetStoredStringLength, ReadStoredStringTelt bestaande UTF-16-opslag met de éénbased stringidentiteit van de tabel en kopieert pas wanneer het niet-negatieve tekenquotum dat dekt; ongeldige identiteiten en onvolledige UTF-16-opslag worden geweigerd
TXLSFontList.GetStoredNameLength, ReadStoredNameControleert de opgeslagen fontsleutel op de nulgebaseerde index van de lijst vóór het tellen of kopiëren van zijn naam onder een niet-negatief tekenquotum
TMsoFbtOptItem.HasStoredUnicodeStringControleert begrensde opgeslagen complexe Unicode-string-metadata zonder een string te materialiseren
TMsoShapeContainer.HasOrdinaryChartObjectDataControleert opgeslagen grafiekobjecttype, niet-nul objectidentiteit, ondersteunde vlaggen en afwezigheid van onbekende objectstaartgegevens

Onderhoud van de shared string-tabel en SST-emissie

TXLSStringTable in lxStringTable ondersteunt de shared strings van de classic-werkmap; de leden hieronder dekken registratie aan de lezerskant, slotonderhoud en rauwe SST-emissie voor roundtrip-saves

KeyExists, AddWithExtrasKeyExists meldt of een string al een slot bezet; AddWithExtras is de metgezel van Add aan de lezerskant die de rauwe rich-text-payload rgRun en fonetische payload rgExtRst aan de entry koppelt zonder zijn referentieaantal te verhogen, omdat elke refererende cel het aantal later via het normale add-pad herstelt
Replace, ReplaceIndexReplace haalt één referentie uit het oude slot, geeft het vrij wanneer zijn telling nul bereikt en voegt de tekst opnieuw toe, met het resulterende slot als retour; ReplaceIndex verplaatst één referentie van het oude slot naar het nieuwe slot zonder tekst te kopiëren
AddSSTData, InitExtIndexAddSSTData emitteert de rauwe SST-payload in de bloblijst van de writer; de overload met een remaptabel voor fontruns herschrijft elke FormatRun-fontindex op de uitgang ([MS-XLS] §2.5.129) zodat rich runs de fontherordening bij het opslaan volgen, terwijl een lege tabel legacy letterlijke emissie behoudt, en InitExtIndex nummert de ExtSST-buckets over live slots vóór de emissie
SlotCount, ExtIndex, ParsedExtSSTDsst, ParsedExtSSTItemCount, BiffSizeLimitSlotCount is de 1-based bovengrens voor slotiteratie, met verwijderde slots die leeg lezen, ExtIndex herleidt een slot naar zijn ExtSST-bucketnummer of -1 voor een slot dat niet live is, ParsedExtSSTDsst en ParsedExtSSTItemCount behouden geïmporteerde EXT/SST-headervaarden, en BiffSizeLimit begrenst elke geëmitteerde recordchunk — de classic writer zet die op 2080 bytes voor BIFF5 en 8224 voor BIFF8

PDF-bijlagen, handtekeningen en HTML-export

IXLSPDFAttachmentSourceWriteTo streamt de bytes van een bijlage de PDF-export in zonder dat de exporteur zelf de brongegevens hoeft te beheren
TXLSPDFExportAttachmentDuplicatePolicy kiest de afhandeling van dubbele namen, AttachmentSpoolThreshold stuurt het spoolen van bijlagen, en DocumentLanguage schrijft de metagegevens van de documenttaal
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBolden TextItalic configureren het zichtbare uiterlijk van de handtekening
TXLSHTMLExportViewMode (type TXLSHtmlViewMode: huidige weergave of volledige spreadsheettabel) kiest de HTML-presentatie, terwijl HotTrackTargets (set van TXLSHtmlHotTrackTarget) en HotTrackColor interactieve markering van cellen en objecten regelen
TXLSXHtmlExportOptionsViewMode, HotTrackTargetsen HotTrackColor bieden de equivalente besturing voor XLSX-HTML-export

Berekeningsaudit en werkmapbesturing

TXLSCalculationAuditReportTruncated meldt afkapping wegens het probleemlimiet, StackTruncated meldt afkapping van callstack-frames, en Issues indexeert de vastgelegde berekeningsproblemen
TXLSUserFunctionRegistryGeneration verandert zodra de geregistreerde set gebruikersfuncties verandert, zodat gecachte formulebindingen ongeldig kunnen worden verklaard
EXLSReportRecoverableDataCategory identificeert de categorie herstelbare rapportgegevens die aan de aanroeper wordt getoond
IXLSWorkBookManualCalculationThreadCount begrenst het aantal workers dat handmatige berekening gebruikt
TXLSXDataValidationHasUnknownImeMode meldt een IME-moduswaarde die HotXLS heeft behouden maar niet herkent
TXLSXTableColumnCalculatedFormulaArrayRaw en ColumnTotalsFormulaArrayRaw leggen de oorspronkelijke matrixformuletekst voor tabelkolommen bloot

Compatibiliteit van verouderde PivotCache-framing

TXLSPivotCacheRawBucketIndex identificeert de positie in de bronsubstream, RawFramingIsLegacy herkent een oude HotXLS-framing, RawModelIsComplete meldt of het getypeerde model elk record vertegenwoordigt, en CanUpgradeFraming meldt of opnieuw uitschrijven als getypeerd model op expliciete aanvraag veilig is
TXLSPivotCacheStreamId legt de identiteit van de klassieke cachestream bloot, SourceDataType legt het klassieke brongegevenstype bloot, en RawHasStorageStream meldt of een geladen cache uit een eigen PivotCache-opslagstream kwam
TXLSWorkbookUpgradeLegacyPivotCacheFraming schakelt het herschrijven in van alleen verouderde HotXLS-cacheframings waarvan het getypeerde model compleet is; gewone raw-cache-replay blijft de standaard

StreamId wordt geschreven als het SXStreamID -record ([MS-XLS] §2.4.303) en herhaald als het veld SXDB in de idstm -header, dat eraan gelijk moet zijn; SourceDataType wordt geschreven als het SXVS -record ([MS-XLS] §2.4.317: $0001 werkblad, $0002 extern, $0004 consolidatie, $0010 scenario) en herhaald als het veld SXDB in de vsType -header, dat eraan gelijk moet zijn. Caches die uit een werkbladbereik zijn opgebouwd beginnen bij het werkbladtype, terwijl caches die uit een bestand worden teruggelezen de waarde houden die hun substream droeg, zodat de BIFF-writer nooit een SXDB -veld achterlaat dat naar een record verwijst dat hij niet heeft uitgeschreven; RawHasStorageStream markeert een cache die uit zijn eigen opslagstream is geladen en waarvan de werkmapglobale descriptor aan de gecachte records voorafgaat

Klembordintegratie en plakopties

TXLSPasteOption = (xlpoValuesOnly, xlpoInsertRows, xlpoInsertCols);
TXLSPasteOptions = set of TXLSPasteOption;

function XLSGetClipboardText: WideString;
function XLSSetClipboardText(const Text: WideString): Boolean;
function XLSSetClipboardTextAndHtml(const Text: WideString;
  const Html: AnsiString): Boolean;
function XLSBuildHtmlClipboard(const Html: AnsiString): AnsiString;
function XLSEncodeClipboardField(const Text: WideString): WideString;
function XLSClipboardHasText: Boolean;
function XLSParseClipboardGrid(const ClipboardText: WideString;
  Loader: TXLSCSVLoader): Boolean;
function XLSClipboardHasXmlSpreadsheet: Boolean;
function XLSGetClipboardXmlSpreadsheet: WideString;
function XLSParseXmlSpreadsheet(const XmlText: WideString;
  Loader: TXLSCSVLoader): Boolean;
function XLSClipboardHasBiff8: Boolean;
function XLSGetClipboardBiff8: AnsiString;
function XLSReadClipboardPasteData(out Biff8: AnsiString;
  out Text: WideString): Boolean;
function XLSSetClipboardBiff8(const Biff8: AnsiString;
  const Text: WideString; const Html: AnsiString = ''): Boolean;
      
De plakopties worden gedeeld door de PasteFromClipboard -overloads van beide facades: xlpoValuesOnly houdt de gecachte waarden van formulecellen aan en slaat opmaak en samengevoegde cellen over, terwijl xlpoInsertRows en xlpoInsertCols bestaande inhoud opschuiven voordat het blok landt
De helpers wikkelen het Windows-klembord in voor spreadsheet-interop: de teksthulpfuncties gebruiken CF_UNICODETEXT (met terugval op CF_TEXT via de huidige ANSI-codepage), XLSSetClipboardTextAndHtml schrijft tekst en een opgemaakte HTML Format -payload in één transactie, XLSBuildHtmlClipboard berekent de CF_HTML-byteoffsets voor een document of fragment, en XLSEncodeClipboardField quote één veld uit een tabgescheiden reeks. XLSParseClipboardGrid parseert klembordtekst als tabgescheiden rijen met dezelfde typesniffering die TXLSCSVLoader voor CSV gebruikt, XLSParseXmlSpreadsheet vult dezelfde loader met een SpreadsheetML 2003-payload die met XLSGetClipboardXmlSpreadsheet is opgehaald, en de Biff8 -helpers detecteren en lezen de native stream die Excel zelf op het klembord zet, zodat geplakte gegevens waarden, formules en opmaak behouden zonder tekstverlies
XLSReadClipboardPasteData vangt de Biff8 -stream en de Unicode-tekst in één klembordvergrendeling, zodat een plakactie tussen de twee lezingen het klembord nooit opnieuw hoeft te openen en geen van beide formaten aan een concurrente houder verliest. XLSSetClipboardBiff8 is de bijbehorende schrijfkant: die zet de BIFF8-compoundfile-stream, tabgescheiden Unicode-tekst en een optionele CF_HTML-payload in één transactie — geef een lege Text of Html door om een van beide begeleidende formaten over te slaan; het Biff8 -onderdeel is verplicht

Bepalen van de celweergavetekst

TXLSCellDisplayMode = (xcdmFormattedValue, xcdmFormulaText,
  xcdmSuppressedZero);

TXLSCellDisplayOptions = record
  ShowFormulas: Boolean;
  ShowZeros: Boolean;
  SheetProtected: Boolean;
  FormulaWidthFactor: Double;
  DateSerialZero: Double;
end;

TXLSCellDisplayInput = record
  HasFormula: Boolean;
  FormulaHidden: Boolean;
  IsNumericZero: Boolean;
  FormulaText: WideString;
  FormattedText: WideString;
end;

TXLSCellDisplayResult = record
  Mode: TXLSCellDisplayMode;
  Text: WideString;
  TreatAsText: Boolean;
  EffectiveWidthFactor: Double;
end;

function XLSDefaultCellDisplayOptions: TXLSCellDisplayOptions;
function XLSNormalizeFormulaDisplayText(const FormulaText: WideString): WideString;
function XLSResolveCellDisplay(const Options: TXLSCellDisplayOptions;
  const Input: TXLSCellDisplayInput): TXLSCellDisplayResult;
      
Eén gedeelde resolver bepaalt wat een cel toont bij een gegeven weergavestatus: formules in plaats van waarden, onderdrukte nullen, verborgen formuletekst op beveiligde werkbladen en de verdubbelde breedtefactor die Excel toepast bij de weergave van formules. De werkmapviewer en de renderers roepen hem aan via hun display-options-ingangspunten, en applicaties kunnen XLSResolveCellDisplay rechtstreeks aanroepen met hun eigen invoerrecords; XLSDefaultCellDisplayOptions geeft de canonieke standaardwaarden terug en XLSNormalizeFormulaDisplayText normaliseert een formuletekenreeks voor weergave

Klassieke gegevensvalidatieobjecten

TXLSDataValidationType = (xlsDvAny, xlsDvWhole, xlsDvDecimal, xlsDvList,
  xlsDvDate, xlsDvTime, xlsDvTextLength, xlsDvCustom);
TXLSDvErrorStyle = (xlsDvErrStop, xlsDvErrWarning, xlsDvErrInformation);

TDVRange = class;             { one validation rule over one or more ranges }
TDVRangeList = class;         { the per-sheet rule collection }
TDataValidator = class;       { engine that checks edits against the rules }
      
De getypeerde TXLSWorksheet.Add*Validation -helpers maken TDVRange -regels aan in de TDVRangeListvan het werkblad; elke regel draagt zijn TXLSDataValidationType, grenzen, invoer- en foutmeldingen en TXLSDvErrorStyle. TDataValidator toetst een bewerking aan de regels en meldt of de waarde acceptabel is — dezelfde controle die achter de validatiemeldingen van Excel zit

Geïndexeerde kleuren scannen en oplossen

TXLSIndexedColorKind = (xickPalette, xickAutomatic, xickSystem, xickInvalid);
TXLSSystemColorRole = (xscrNone, xscrWindowText, xscrWindowBackground,
  xscrChartText, xscrChartBackground, xscrChartNeutral, xscrToolTipText);

TXLSIndexedColorResolution = record
  Kind: TXLSIndexedColorKind;
  RawIndex: Int64;
  PaletteSlot: Integer;
  SystemColorRole: TXLSSystemColorRole;
  ARGB: LongWord;
  HasResolvedColor: Boolean;
end;

TXLSNearestIndexedColorMatch = record
  InputARGB: LongWord;
  ColorIndex: Integer;
  PaletteSlot: Integer;
  ARGB: LongWord;
  DistanceSquared: Double;
  ExactMatch: Boolean;
end;

TXLSIndexedColorUsageKind = (xicukFont, xicukFillForeground,
  xicukFillBackground, xicukGradient, xicukBorder, xicukConditionalFormat,
  xicukChart, xicukShape, xicukComment, xicukWorksheet, xicukOther);
      
Deze records liggen ten grondslag aan de methoden op werkmapniveau ResolveIndexedColor, NearestIndexedColoren ScanIndexedColorUsage : een resolutie meldt van welke van de vier TXLSIndexedColorKind -bronnen een geïndexeerd token afkomstig is, samen met zijn paletslot, systeemkleurrol en genormaliseerde ARGB, een dichtstbijzijnde match voegt de kwadratische RGB-afstand en de exact-match-vlag toe, en de gebruiksscan labelt elke consumentcategorie die een paletslot bezet. De bibliotheek houdt een interne TXLSIndexedColorMatcher -cache bij, gekeyd op paletgeneratie — FindNearest beantwoordt vragen naar de dichtstbijzijnde kleur vanuit die cache en UpdateSlot patcht één paletslot — zodat herhaalde resoluties allocation-vrij blijven

Helpers voor A1-verwijzingen

function XLSA1CellRef(ARow, ACol: Integer): WideString;
function XLSTryParseA1CellRef(const ARef: WideString;
  out ARow, ACol: Integer): Boolean;
function XLSTryParseA1RangeRef(const ARef: WideString;
  out ARow1, ACol1, ARow2, ACol2: Integer): Boolean;
      
Losse helpers voor dezelfde A1-notatie die de werkmap-API's accepteren: ze zetten nul-gebaseerde coördinaten om naar een A1-celverwijzing en parseren cel- of bereikverwijzingen terug, met False bij misvormde invoer in plaats van een exceptie

Zie ook