HotXLS-Dokumentation

Weitere Bibliotheks-API-Elemente

Diese Seite vervollständigt die Referenz für öffentliche Typen, die die primären Arbeitsmappen-, Arbeitsblatt-, Rendering-, Import-, Diagnose- und Viewer-APIs unterstützen, aber keinen separaten aufgabenorientierten Leitfaden erfordern

Filterung und bedingte Formatierung

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clearund ParseAutofilterData bearbeiten oder importieren die Filterdefinition; SetRangeBounds(ARow1, ACol1, ARow2, ACol2) stellt 1-basierte inklusive Grenzen wieder her, ohne geladene Kriterien oder Dropdown-Shapes zu entfernen, und ignoriert nichtpositive oder umgekehrte Grenzen sowie eine Spaltenzahl, die von den geladenen Feldern abweicht; Defined, FirstRow, FirstCol, LastCol, LastRowund FieldCount legen ihre aktiven Grenzen und die Anzahl gefilterter Spalten offen
TXLSAutofilterItemShape legt die dem Element zugeordnete Filterschaltflächen-Zeichnung offen, und das geladene Filterkriterium liegt als TXLSAutofilterDOPER -Operandendatensatz vor — DataType wählt die Operandenform, grbitSgn trägt die Vorzeichen- und Flag-Bits — zum Inspizieren oder für Roundtrip-Bearbeitungen
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTintund ClearAxisThemeColor steuern die Achse; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositiveund NegativeBorderColor steuern das Erscheinungsbild der Balken; IsIndexedColor, IndexedColorIndexund ClearIndexedColor verwalten die palettenindizierte Balkenfarbe
TXLSIconSetSpecThresholdEqualsInclude wählt für jede Symbolschwelle den einschließenden oder ausschließenden Vergleich
TXLSCfValueIsIndexedColor und IndexedColorIndex melden eine als Legacy-Palettenindex gespeicherte Schwellenfarbe, ClearIndexedColor entfernt diese Form wieder, und Design- oder Literal-Farben bleiben über die vorhandenen Accessoren verfügbar

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpecund TXLSDxfStyle akzeptieren AttachWriteGuardOwnerund verknüpfen das Regelobjekt mit seiner besitzenden Arbeitsmappe, sodass Bearbeitungen automatisch einen Schreibguard anfordern; der Besitzer implementiert TXLSCondFormatWriteGuardOwner, dessen einzige Methode AcquireWriteGuard der Regel den Schreibguard der Arbeitsmappe übergibt. TXLSDxfStyle ergänzt FontColorIndex mit FontColorIsIndexed sowie die Paare FillFgColorIndex / FillFgColorIsIndexed und FillBgColorIndex / FillBgColorIsIndexed für palettenindizierte Regelfarben, dazu die differenziellen Schriftart-Overrides FontName, FontSizeund FontScheme (leere Zeichenfolge, ein Punktwert oder ein Design-Schriftart-Slot wie major / minor) neben den vorhandenen Membern für Fett, Kursiv, Unterstreichung und Farbe; jede Zuweisung fordert den Schreibguard an und markiert die Regel für die erneute Ausgabe als geändert

TXLSConnections, TXLSDataTables, and TXLSQueryTables expose OnAcquireWriteGuard , TXLSConnectionAcquireWriteGuardund TXLSDataTableAcquireWriteGuardlegen TXLSQueryTableAcquireWriteGuardoffen, den Hook, den ihre Bearbeitungspfade verwenden, um vor der Änderung den IXLSWorkbookWriteGuard der besitzenden Arbeitsmappe zu erhalten und danach die Arbeitsmappen-Generation voranzustellen; der Guard zeichnet StartGenerationauf, und Complete markiert den Schreibvorgang als abgeschlossen, sodass abhängige Caches neu aufgebaut werden können

Bewahrte Datenverbindungen tragen eine typisierte Beschreibung: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) klassifiziert die Verbindung, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) hält ihren Authentifizierungsmodus fest, und jeder Parameterwert einer Verbindung ist mit TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell) markiert. Was-wäre-wenn-Datentabellen melden ihre gespeicherte Definitionsart über TXLSDataTableKind

Was-wäre-wenn-Datentabellen und Pivotgruppierung

TXLSDataTableAssign, ContainsCellund IsRoot kopieren und prüfen eine Tabelle; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRowund RowInputDeleted legen die gespeicherte Berechnungsdefinition offen
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShiftund Offset pflegen die Auflistung; FindByCell und FindRoot finden die Tabelle, die eine angegebene Zelle enthält oder an ihr wurzelt; Count, Itemsund OnChange legen den Auflistungszustand offen
TXLSPivotCacheFieldGroupBaseField und GroupParentField legen die Beziehungen zwischen einem gruppierten Feld und seinem Quell- oder übergeordneten Feld offen

Symbolschwellen lassen sich programmgesteuert rendern oder validieren: XLSCfIconSetCount meldet, wie viele Symbole ein TXLSIconSetType definiert, und XLSBuildCfIconGeometry füllt eine TXLSCfIconGeometry mit den Primitiven (TXLSCfIconPrimitive, Art TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) und Punkten (TXLSCfIconPoint), die ein Symbol zeichnen, sodass eigene Renderer Excels eingebaute Symbolformen treffen

Diagnose, Formelverfolgung und Validierung

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetNameund StreamOffset identifizieren eine Parser-, Writer- oder Paketdiagnose
TXLSDiagnosticsAdd hängt eine Diagnose an, Clear setzt die Auflistung zurück, und Count zusammen mit Items zählt ihre Einträge auf
TXLSDiagnosticSeverity and TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) klassifiziert eine Diagnose, und TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) benennt die Phase, die sie erzeugt hat; OnDiagnostic -Handler lesen beides aus der zugestellten TXLSDiagnostic
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCountund StepCount legen die aktuelle Debugger-Momentaufnahme und ihre Ablaufverfolgungsgrößen offen
TXLSFormulaTracerStepCount meldet die Anzahl der aufgezeichneten Auswertungsschritte
TXLSImportCheckAddRule, AddUniqueRule und AddCrossColumnRule konfigurieren Spaltenprädikate, zusammengesetzte Eindeutigkeit und typisierte Vergleiche; Check liefert strukturierte Verletzungen aus gespeicherten Arbeitsblattwerten und Formel-Caches, ohne neu zu berechnen oder gepackte Zellen zu materialisieren; HeaderRow, FirstRow, LastRow, OnVerifyCell, ViolationCount und Violation legen Grenzen, Callbacks und Ergebnisse offen; Annotate und KeepOnlyViolations sind explizite Korrektur-Arbeitsmappen-Operationen; siehe Importvalidierungs-Schemata für Typen, Grenzen, Datumssysteme, Tupel-Identität und Fehlerverhalten

Importvalidierungs-Schemata

TXLSImportCheck aus lxImportCheck validiert ein TXLSXWorksheet gegen Regeln der Anwendung; es untersucht gespeicherte Skalarwerte und gespeicherte Formelergebnisse, mit 1-basierten Arbeitsblattkoordinaten und ohne implizite Konvertierung von Text zu Zahl, Text zu Datum oder Text zu 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 startet die Prüfung in der nächsten Zeile und hat Vorrang vor FirstRow; sonst ist FirstRow standardmäßig 1; LastRow = 0 verwendet die letzte genutzte Zeile des Arbeitsblatts, während ein positives LastRow abwesende Zellen einschließen kann, ohne sie zu erzeugen; Spalten müssen innerhalb von 1 bis 16.384 liegen und aktive Datenzeilen-Grenzen innerhalb von 1 bis 1.048.576

Spaltenregeln und explizite Typen

TlxImportColumnRuleColumn, Flags, Name, Title, MinLength, MaxLength, Pattern, ValueKind und DateSerialMode konfigurieren eine Spalte; MinimumValue, MaximumValue, HasMinimum, HasMaximum, MinimumInclusive und MaximumInclusive konfigurieren Grenzen; Validate prüft die Schemakonfiguration, und PreparePattern bereitet den Regex vor; die beiden Check-Überladungen liefern ein Boolean mit Fehlermeldung und optional einem TlxImportViolationKind
TlxImportRuleFlagsirRequired, irTextLength, irPattern, irUnique und irCallback behalten ihre vorhandenen Prüfungen; irValueType aktiviert ValueKind, und irValueRange aktiviert die konfigurierten Grenzen; eine Spalte ohne Flags wird nicht geprüft
TlxImportValueKindivkAny akzeptiert unterstützte endliche Skalarwerte, ivkNumber akzeptiert endliche numerische Varianten, ivkInteger verlangt zusätzlich einen ganzzahligen Wert, ivkDate akzeptiert Datums-Varianten oder explizit aktivierte Excel-Serials, ivkBoolean verlangt eine Boolean-Variante, und ivkText verlangt eine String-Variante
TlxImportDateSerialModeidsNone ist der Standard und hält numerische Werte von Datumswerten getrennt; idsExcel1900 und idsExcel1904 interpretieren numerische Werte für eine Spalte explizit, die irValueType mit ValueKind = ivkDate verwendet

AddRule(Column) ersetzt jede frühere Regel für diese Spalte und gibt sie frei; die Prädikate für Wertetyp, Bereich, Länge und Muster pro Wert überspringen fehlende Werte, Nullen und leere Strings, während irRequired sie meldet; Eindeutigkeit behält die unten beschriebenen getrennten Politiken; nichtleeres Whitespace bleibt ein Wert; eine Zahl gilt nicht als Boolean, ein Datum nicht als gewöhnliche Zahl, und eine numerisch aussehende Zeichenfolge bleibt Text

Die Zuweisung von MinimumValue oder MaximumValue aktiviert die jeweilige Grenze; HasMinimum oder HasMaximum kann sie wieder deaktivieren; beide Inklusiv-Schalter stehen standardmäßig auf True; Grenzen müssen endliche typisierte Zahlen oder Datumswerte sein, und zwei Grenzen müssen vergleichbar sein und ein nichtleeres Intervall beschreiben; umgekehrte, fehlende, inkompatible oder leere Grenzen lösen eine Ausnahme aus, bevor die Arbeitsblattvalidierung beginnt

Zahlen-Grenzen vergleichen numerische Werte, Datums-Grenzen vergleichen Datumswerte; Ganzzahl-zu-Ganzzahl-Vergleiche bewahren alle Int64- und UInt64-Bits; Werte einer inkompatiblen Kategorie bestehen die Bereichsprüfung nicht; Textlängen- und Regex-Prädikate untersuchen weiterhin die Textrepräsentation des Skalars, und Regex-Prüfungen behalten das vorhandene IsMatch-Verhalten — verwenden Sie also Anker wie ^...$, wenn der komplette Text matchen muss; ein invalides Regex deaktiviert seine Musterprüfung aus Kompatibilitätsgründen

Datumsformatierte Excel-Werte

Eine aus Excel importierte Zelle kann eine numerische Serial enthalten, selbst wenn ihr Zahlenformat ein Datum anzeigt; wählen Sie einen Serial-Modus explizit, wenn genau das das akzeptierte Import-Schema ist; der Modus wirkt nur auf die Validierung und ändert niemals den gespeicherten Zellwert

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 ist in Variants deklariert, EncodeDate in SysUtils; numerische Serials müssen nichtnegativ sein und vor dem 1. Januar 10000 auflösen; fraktionale Serials behalten ihre Tageszeit; das 1900-System weist jede Serial von 60 inklusive bis 61 exklusiv zurück, weil dieses Intervall den fiktiven Schalttag bezeichnet; das 1904-System mappt Serial null auf den 1. Januar 1904

Datums-Grenzen schließen die Tageszeit ein — ein auf Mitternacht des 31. Dezember gesetztes Maximum schließt spätere Zeiten an diesem Tag aus; verwenden Sie eine exklusive Obergrenze am 1. Januar des Folgejahres, wenn der gesamte letzte Tag akzeptiert werden soll; Textdaten wie 10/08/2026 bleiben Text, unabhängig vom konfigurierten Serial-Modus

Zusammengesetzte Eindeutigkeit und spaltenübergreifende Vergleiche

AddUniqueRule(const AColumns: array of Integer): TlxImportUniqueRuleFügt eine unabhängige Tupel-Beschränkung über eine geordnete, nichtleere Liste distincter Spalten hinzu; Name identifiziert die Regel, Title stellt das Präfix ihrer Meldung, ColumnCount und nullbasierte Columns[Index] legen ihre Mitglieder offen, und SkipIncompleteRows ist standardmäßig True
AddCrossColumnRule(ALeftColumn, ARightColumn: Integer; AComparison: TlxImportComparison): TlxImportCrossColumnRuleFügt einen zeilengleichen Vergleich mit schreibgeschützten LeftColumn und RightColumn, einem editierbaren Comparison, Name, Title und SkipBlankValues hinzu, das standardmäßig True ist
TlxImportComparisonicEqual, icNotEqual, icLess, icLessOrEqual, icGreater und icGreaterOrEqual wählen die Relation; numerische Paare und Datumspaare vergleichen ihre Werte, Boolean-Paare ordnen False vor True, und String-Paare vergleichen case-sensitiv ordinal über UTF-16-Codeeinheiten

Zusammengesetzte Schlüssel behalten den exakten Variant-Typ und die Textidentität jedes Mitglieds; Integer(1), Double(1), der String '1', ein Boolean und ein Datum sind unterschiedliche Mitglieder; es gibt kein Case Folding, keine Unicode-Normalisierung, kein Locale-Parsing und keine Trennzeichen-Mehrdeutigkeit; Kombinationen wie ('ab', 'c') und ('a', 'bc') bleiben verschieden; jeder Validierungsdurchlauf startet einen frischen Tupel-Index

Bei SkipIncompleteRows = True schließt ein fehlendes, Null- oder Leerstring-Mitglied diese Zeile aus der Tupel-Eindeutigkeit aus; bei False werden diese Mitglieder mit ihren ursprünglichen Variant-Identitäten einbezogen; ein Duplikat meldet die erste Tupelspalte als Zelladresse und die erste passende Zeile über FirstDuplicateRow

Das vorhandene einspaltige irUnique behält sein textbasiertes, Case-insensitives Matchverhalten und überspringt fehlende oder Null-Werte; verwenden Sie AddUniqueRule([Column]), wenn für eine Spalte strenge typisierte Identität nötig ist

Spaltenübergreifende Vergleiche koerzieren niemals Strings zu Zahlen, Zahlen zu Booleans oder gewöhnliche Zahlen zu Datumswerten; gemischte inkompatible Kategorien scheitern auch bei icNotEqual; Stringvergleiche unterscheiden komponierte und dekomponierte Unicode-Formen, bewahren eingebettete Null-Zeichen und verwenden kürzere-Präfix-zuerst-Ordnung; bei SkipBlankValues = False erzeugt jeder leere Operand eine spaltenübergreifende Verletzung

Strukturierte Ergebnisse und Korrektur-Arbeitsmappen

TlxImportViolationRow, Col, SheetName und Address identifizieren die Zelle, mit Address in A1-Notation; ValueText und ErrorText tragen Anzeigeinformationen; RuleName und Kind identifizieren die konfigurierte Regel und die Fehlerkategorie; RelatedColumn identifiziert den zweiten Operanden einer spaltenübergreifenden Verletzung, und FirstDuplicateRow identifiziert die Originalzeile bei Eindeutigkeitsverletzungen
TlxImportViolationKindivRequired, ivTextLength, ivPattern, ivUnique, ivCallback, ivValueType, ivValueRange, ivCellError, ivFormulaCacheMissing, ivCompositeUnique und ivCrossColumn unterscheiden die unterstützten Fehlerkategorien

Check(Sheet) liefert die Anzahl der Verletzungen, und ViolationCount plus nullbasiertes Violation(Index) zählen den Bericht auf; eine Spaltenregel meldet ihr erstes fehlgeschlagenes Prädikat, während unabhängig konfigurierte Tupel- und Vergleichsregeln weitere Verletzungen für dieselbe Zelle hinzufügen können; weisen Sie aussagekräftige Name-Werte zu, wenn Aufrufer stabile anwendungsseitige Regel-Identifikatoren brauchen

Formelzellen werden anhand ihrer gespeicherten Cache-Werte validiert; eine Formel ohne gespeichertes Cache-Ergebnis meldet ivFormulaCacheMissing, ein Fehlerergebnis meldet ivCellError; berechnen Sie vor der Prüfung explizit neu, wenn frische Formelergebnisse nötig sind; die Validierung greift nicht auf externe Quellen zu, ändert keine Formeldefinitionen und wertet nicht gecachte Formeln nicht aus

OnVerifyCell behält die TlxImportVerifyCell-Callback-Signatur und läuft nach erfolgreichen anwendbaren Spaltenprädikaten und Eindeutigkeitsprüfungen; er liefert ein Boolean und kann eine anwendungsseitige Fehlermeldung setzen; Callbacks müssen Arbeitsmappe und Validierungsschema unverändert lassen, und Arbeitsmappen-Schreibvorgänge werden von der Leselease zurückgewiesen; Callback-Ausnahmen propagieren, und die Lease wird für nachfolgende Operationen freigegeben

Check annotiert nie, löscht keine Zeilen und materialisiert keine gepackten Werte; verwenden Sie Annotate nach der Prüfung, um rote Schrift anzuwenden und Fehlermeldungstext an vorhandene Kommentare anzuhängen, oder rufen Sie explizit KeepOnlyViolations auf, um nicht verletzende Zeilen zu entfernen und eine Korrektur-Arbeitsmappe zu erzeugen; diese Methoden ändern das gelieferte Arbeitsblatt — rufen Sie sie also nach Durchsicht des Berichts an der beabsichtigten Arbeitsmappe auf

Die Validierung leiht sich Arbeitsblatt und Arbeitsmappe für den synchronen Aufruf; sie übernimmt weder das Objekteigentum des Aufrufers noch verlangt sie eine interface-gehaltene Arbeitsmappe; eine Leselease schützt relevante gespeicherte Zell-Snapshots und den Zugriff auf gespeicherte Formel-Caches während der gesamten Prüfung

TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Beide Engines speichern standardmäßig zwischengespeicherte Werte und verwenden xluPromptUser; xluNever und xluAlways ändern nur die in der Arbeitsmappe gespeicherte Aktualisierungseinstellung und autorisieren oder initiieren nie externen Datei- oder Netzwerkzugriff

Berechnungsaudit und Arbeitsmappenhinweise

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 fasst Formelsymbolfehler und Cachewertabweichungen in stabilen strukturierten Kategorien mit Arbeitsblattkoordinaten, Formeln, Symbolen, Soll- und Istwerten sowie begrenzter Kürzung zusammen, ohne Caches oder Arbeitsmappensemantik zu verändern. RecalcAndVerifyEx führt den tiefen Audit aus: Jede Formel wird einmal über den Abhängigkeitsgraphen in ein isoliertes Ergebnis-Overlay ausgewertet, sodass abhängige Zellen diesen Lauf statt veralteter Caches lesen; Auswertungsfehler werden mit Ergebniscode kategorisiert, mit begrenztem Call Stack aufgezeichnet, beachten Problembudget und Fortschritts- oder Abbruch-Sink und bleiben schreibgeschützt, bis ApplyResults die neu berechneten Werte nach einem vollständig erfolgreichen Durchlauf über eine unveränderte Arbeitsmappenstruktur atomar übernimmt
AbsoluteTolerance und RelativeTolerance steuern die Abweichungsberichterstattung, nicht Zwischenberechnungswerte oder die explizite Cache-Übernahme Bei numerischen Ergebnissen erfordert eine Abweichung eine absolute Differenz oberhalb von AbsoluteTolerance und, wenn relative Toleranz aktiviert ist, oberhalb von RelativeTolerance * max(abs(Expected), abs(Actual)) Gleichheit an einer der Grenzen wird toleriert; geänderte Werte fließen dennoch in das Audit-Overlay ein, sodass abhängige Formeln die aktuelle Berechnung sehen, und ApplyResults übernimmt diese Werte, selbst wenn ihre Differenzen nicht meldefähig sind Ein schreibgeschützter Audit verändert niemals gespeicherte Caches
Jedes Element von TXLSCalculationAuditReport.Issues ist ein TXLSCalculationAuditIssue; Kind wählt eine der xlcai* -Kategorien, Expected / Actual tragen die verglichenen Werte bei Cache-Abweichungen, Stack ist die begrenzte Auswertungs-Callchain, gerendert als Sheet!A1 > Sheet!B2 (äußerster Frame zuerst), und ExternalTarget beschreibt die externe Arbeitsmappe bei externen Bezugs-Problemen. TXLSRecalcAuditOptions.OnProgress ist eine TXLSRecalcAuditProgress -Senke, die ACurrent / ATotal -Knotenfortschritt empfängt und ACancel setzen kann, um den Audit an der nächsten Knotengrenze mit einem einzigen xlcaiCancelled -Problem zu stoppen
RunCalculationAudit ist der Engine-Einstieg, an den die Arbeitsmappen-Audit-Wrapper delegieren, und nimmt denselben Optionsdatensatz entgegen. FormulaIsVolatile meldet, ob eine Formel bei jedem Durchlauf eine Neuberechnung erzwingen würde (Aufrufe wie NOW, RAND, TODAY, OFFSET, INDIRECToder ein nicht auflösbarer Bezug)
Das Audit-Overlay ist eine Was-wäre-wenn-Schicht über den Zellcaches: AuditOverlayWrite speichert einen Ersatzwert für eine Zelle (1-basierter Blattindex, 0-basierte Zeile und Spalte gemäß Konvention des Calculators), AuditOverlayRead und AuditOverlayHash fragen sie ab, und AuditOverlayClear leert die Schicht. Überlagerte Werte liefern die normalen Zellwert-Getter zurück, sodass Neuberechnung und tiefer Audit sie sehen, ohne Arbeitsblattzellen zu verändern; das Leeren des Overlays stellt die gespeicherten Werte wieder her
Die Hinweis-Eigenschaften der Arbeitsmappe bewahren fehlende, falsche, wahre, deaktivierte, automatische und manuelle Zustände, wo das Quellformat sie unterstützt; beim Öffnen starten sie niemals Berechnungen, Aktualisierungen oder Datei-, Netzwerk- oder Datenbankzugriffe

Tabellenformel- und IME-Zustand

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Formeln berechneter Spalten und Summenzeilen behalten unabhängige fehlende, falsche, wahre oder unbekannte Arrayzustände, einschließlich unberührter lexikalischer Quellwerte und struktureller Spaltenänderungen; eine skalare Zeilenerweiterung lehnt Arrayformeln ab, statt sie still zu ändern
IME-Modi verwenden explizite BIFF- und OOXML-Zuordnungen, bewahren unbekannte Quellwerte und lehnen den nur in OOXML verfügbaren deaktivierten Wert beim Erstellen von Classic XLS ab
Setzt man SaveExternalLinkValues auf False , werden die Classic-Datensätze XCT und CRN beziehungsweise der externe sheetDataSet -Teilbaum des XLSX-Externbuchs weggelassen, während Linkziele, Blattnamen, externe definierte Namen, Beziehungen, Formelbezüge, unbekanntes XML und der In-Memory-Cache erhalten bleiben; stellt man die Eigenschaft in derselben Arbeitsmappe wieder auf True , kann dieser behaltene Cache erneut serialisiert werden
Unberührte nicht unterstützte Quell-Tokens bleiben byte-identisch oder lexikalisch erhalten, explizite Zuweisungen geben nur legale Werte aus, unveränderte XLSX-Teile behalten den Pfad für komprimierte Kopien, und die XLS/XLSX-Konvertierung überträgt beide Richtlinien; ODS- und Text-Arbeitsmappen besitzen keine entsprechende Deklaration und öffnen mit den Standardwerten, während erhaltene DDE- und OLE-Linkteile nicht als Zellcaches externer Arbeitsmappen behandelt werden

Untersuchung und Entfernung von Web-Add-In-Aufgabenbereichen

function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
      
Die Untersuchungsmethoden erkennen nur interne Beziehungen zum Paketstamm, deren Typ exakt dem Beziehungstyp der Web-Add-In-Aufgabenbereiche entspricht; externe Beziehungen, anders geschriebene Typen, Arbeitsblattbeziehungen und ähnlich benannte Teile werden ignoriert
Die Entfernung validiert zuerst den vollständigen Beziehungsgraphen, einschließlich normalisierter Ziele, Beschränkung auf den Paketstamm, Zyklen, fehlender Teile und Ressourcengrenzen; anschließend entfernt sie alle übereinstimmenden Stammbeziehungen und nur die erreichbaren Teile, die nicht von einer anderen verbleibenden Beziehung gemeinsam genutzt werden, zusammen mit den Beziehungsteilen gelöschter Quellen
Die Operation ist atomar und idempotent, entfernte Quellteile können durch das Speichern über komprimierte Kopien nicht erneut auftauchen, und die Inhaltstypen werden aus dem verbleibenden Paket neu aufgebaut; falsch geformte Graphen fügen den Diagnosecode 1303 hinzu und lösen vor der Änderung eine Ausnahme aus, während Classic XLS und ODS False, 0und -1 ohne Paketscan zurückgeben

Anzeigerichtlinie für Arbeitsmappenobjekte

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 ordnet die drei Zustände seinem Datensatz für die Objektanzeige der Arbeitsmappe zu, XLSX dagegen workbookPr.showObjects; fehlende Werte verwenden standardmäßig xlsodmShowAll, unberührte reservierte Classic-Payloads und nicht unterstützte XLSX-Tokens bleiben verlustfrei, und explizite Zuweisungen schreiben nur kanonische Werte
Der Viewer stellt den Platzhaltermodus als schlanke Kästen mit verfügbarer Objektart, Namen, Text und Alternativtext dar; Exporter behalten standardmäßig vollständige Objekte bei, während ExportObjectPlaceholders dieselbe kostengünstige Richtlinie ohne Dekodierung von Bild-Payloads oder Aufbau von Diagrammszenen anfordert
xlsodmHideAll verhindert vor dem Rendern das Sammeln von Zeichnungen und die objektausgelöste Bereichserweiterung; die Arbeitsmappenkonvertierung übernimmt alle drei Zustände, ODS schreibt im Platzhaltermodus vollständige Zeichnungen und lässt bei Ausblenden aller Objekte Zeichnungs- und Medienausgabe weg, während Arbeitsblatthintergründe unabhängig bleiben

Renderkalibrierungswerte und Momentaufnahmen

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;
      
Die Standardwerte sind 1, 1, 1, 1, 100und 96; Breiten- und Höhenkorrekturen müssen größer als null und kleiner als zwei sein, der Zeilenabstand ist auf (0, 4]begrenzt, Zellränder auf [0, 4], die Bildschirmskalierung auf [100, 500] Prozent und die Mess-DPI auf [36, 2400]
Classic-XLS- und XLSX-Arbeitsmappen legen dieselben Member RenderCalibration, CaptureRenderCalibrationund ResetRenderCalibration offen; die Zuweisung des gesamten Datensatzes wird vor der Änderung validiert, und jede Erfassung gibt eine unabhängige, vereinbarungsgemäß unveränderliche Wertmomentaufnahme für eine Rendering-Operation zurück

Rendergeometrie und Schriftmessung

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 besitzt eine unveränderliche Kalibrierung, die Arbeitsmappen-Generation, eine Backend-Identität, einen Messdienst und einen begrenzten operationslokalen Metrik-Cache; CreateXLSRenderGeometry verwendet GDI, während CreateXLSPortableCairoRenderGeometry in lxPortableCairo unter nativem Linux oder macOS explizite Font-Bytes mit FreeType/HarfBuzz nutzt; MeasureText gibt Pixelbreite, Höhe, Zeilenhöhe, Oberlänge, Unterlänge und Zeilenanzahl zurück, während MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPointsund UsableCellWidthPixels die gemeinsamen Geometrieumrechnungen bereitstellen
Die Cache-Identität umfasst Backend, Arbeitsmappen-Generation, alle Kalibrierungswerte, Schriftartnamen, exakte Größe, Stile, Zeichensatz, Umbruchbreite und Text; Breiten- und Höhenkorrektur werden einmal während der Textmessung angewendet, der Zeilenabstand wirkt sich nur auf die mehrzeilige Höhe aus, die Zellrandkorrektur nur auf die nutzbare Textbreite, und die Bildschirmskalierung wirkt sich nur auf die Emulation der maximalen Ziffernbreite für implizite Spaltenbreiten aus
Classic XLS und XLSX AutoFit erfassen einen Dienst für jede öffentliche Operation, einschließlich der Messung zusammengeführter Bereiche und der zweiphasigen MarkSheet -Messung, während TXLSPaginationModel.Build einen Dienst für das ausgewählte RenderBackenderfasst; PDF-, SVG-, Bitmap-, Druckvorschau-, Arbeitsmappen-Viewer- und HTML-Einstiegspunkte wählen vor der Ausgabe ihr eigenes Backend, eine geänderte Arbeitsmappenkalibrierung kann eine bestehende Momentaufnahme nicht verändern, und die Ausgabe schreibt keine Arbeitsblattdimensionen
Direkte HTML-Aufrufe für Arbeitsmappen, Arbeitsblätter und Bereiche erfassen einen frischen xlsrgbHtml -Dienst, während eine inkrementelle TXLSXHtmlExportSession einmal in BeginExport erfasst und diese Momentaufnahme für alle Blätter wiederverwendet; beide Exporter legen den behaltenen Dienst über RenderGeometry für Kalibrierungs- und Cachediagnose offen
Die schreibgeschützten IXLSRenderGeometry -Eigenschaften WorkbookGeneration, CacheCapacityund CacheEntryCount melden die gebundene Generation und Cache-Füllung für Diagnosen, und ImplicitWidthMaximumDigitWidthPixels gibt die Ziffernbreitenmessung hinter der Emulation impliziter Spaltenbreiten zurück
MeasureText füllt einen TXLSRenderTextMetrics -Datensatz (Pixelbreite, Höhe, Zeilenhöhe, Oberlänge, Unterlänge und Zeilenanzahl) aus einer TXLSRenderFont , deren Styles -Member eine Menge aus TXLSRenderFontStyle -Flags ist (fett, kursiv, unterstrichen, durchgestrichen)

Import, Codegenerierung, Vergleich und Überwachung

TXLSHTMLImportLoadFromHTML -Überladungen importieren HTML-Tabelleninhalte aus einem Stream oder einer Datei in ein Arbeitsblatt, mit optionalen Startkoordinaten, Tabellenauswahl und Dezimaltrennzeichen
TXLSCodeGenLanguage (Typ TlxCodeGenLanguage: lcgDelphi oder lcgCppBuilder) wählt den Quell-Dialekt der generierten Anweisungen, GenerateToList schreibt generierten Arbeitsmappencode in eine Zeichenfolgenliste, und TlxCodeGenOptions erweitert die Ausgabe um verbundene Zellen, Spaltenbreiten oder Zahlenformate (cgoMerges, cgoColumnWidths, cgoNumberFormats; Blätter und Zellen werden immer ausgegeben)
TXLSXWorkbookCompareCompare vergleicht typisierte gespeicherte Zellen, Formeltext, Blattpräsenz und Verbunde; Options ergänzt Formel-Caches, Basis-Zellstile und Zeilen- oder Spaltengeometrie, SetNumericTolerance konfiguriert numerische Gleichheit, und Count, Diff und Report legen die geordneten Ergebnisse offen; siehe Arbeitsmappenvergleich
TXLSFileMonitorIntervalMs wählt das Abfrageintervall, und SynchronizeEvent wählt die synchronisierte Rückrufzustellung; ein OnFileChanged -Handler darf den Monitor deaktivieren oder zerstören oder FileName ändern, um eine andere Datei zu beobachten
TXLSCSVLoader and TXLSCSVSaverDer Loader parst getrennten Text in ein speicherinternes Raster aus Variants — ParseFile und ParseStream füllen das Raster, CellValue, RowCountund ColCount lesen es zurück — mit automatisch erkanntem Trennzeichen (ValueSeparator) und Encoding (TXLSCsvEncoding: System-ANSI, UTF-16, UTF-8) sowie optionaler Typförderung, gesteuert über DetectTypes und spaltenweise ColumnTypes -Einträge (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbersund FieldWidths verfeinern die Behandlung fester Breiten und Ländereinstellungen. TXLSCSVSaver.SaveAs schreibt das Raster mit RFC-4180-Quoting zurück, und QuoteAllStrings erzwingt Anführungszeichen; TXLSTSVSaver leitet sich für tabulatorgetrennte Ausgabe vom Saver ab

Arbeitsmappenvergleich

TXLSXWorkbookCompare in lxCompare vergleicht zwei TXLSXWorkbook-Instanzen, ohne Formeln neu zu berechnen oder eine der Arbeitsmappen zu ändern; Blätter werden über Case-insensitive Namen gepaart, und eine alleinige Änderung der Blattreihenfolge erzeugt keinen Unterschied

Der Standardwert von Options ist leer, und beide Toleranzen stehen standardmäßig auf null; der Standardvergleich meldet hinzugefügte oder entfernte Blätter, hinzugefügte oder entfernte gespeicherte Zellen, geänderte typisierte Literalwerte, geänderten Formeltext sowie hinzugefügte oder entfernte Verbundbereiche

Der Literalvergleich unterscheidet Zahlen, Text, Boolean-Werte, Datumswerte, Fehler und Leerzellen: die Zahl 1 unterscheidet sich vom Text '1', ein Boolean unterscheidet sich von seiner Textschreibweise, Datumswerte behalten ihren eigenen Typ, und Fehler werden anhand ihres gespeicherten Fehlercodes verglichen; numerische Speichertypen mit gleichen Werten vergleichen gleich, während unterschiedliche Int64-Werte im exakten Vergleich unterschiedlich bleiben

lcoFormulaCachedResultsVergleicht bei Zellen mit passendem Formeltext das vorhandene gecachte Ergebnis und unterscheidet einen fehlenden oder invalidierten Cache von einem verfügbaren; geladene und berechnete Caches mit demselben typisierten Wert vergleichen gleich
lcoCellStylesVergleicht aufgelöste Basisstile an passenden gespeicherten Zellkoordinaten, einschließlich Schriftarten, Füllungen, Verläufen, Rahmen, Ausrichtung, Zahlenformaten und Zellschutz; eine unabhängige Stilpool-Einfügungsreihenfolge erzeugt keine Unterschiede, und Designfarben werden gegen das aktuelle Design jeder Arbeitsmappe aufgelöst
lcoAxisGeometryVergleicht effektive Zeilenhöhen, Spaltenbreiten, Ausgeblendet-Flags, Gliederungsebenen, Zusammengeklappt-Flags und Arbeitsblatt-Defaults; eine explizite Größe gleich dem effektiven Standard vergleicht gleich mit einer impliziten Größe
lcoDefinedNamesVergleicht Arbeitsmappen- und Arbeitsblatt-Namen mit Geltungsbereich, ihre Formeldefinitionen, Sichtbarkeit, Kommentare und Makro-Flags; der Geltungsbereich folgt Arbeitsblattnamen, und die Einfügungsreihenfolge erzeugt keine Unterschiede
lcoDataValidationsVergleicht Validierungsdefinitionen in gespeicherter Reihenfolge, einschließlich normalisierter Zielbereiche, Formeln, Operatoren, Eingabeaufforderungen, Fehlermeldungen und Steuerflags; das Umordnen von Zielbereichen innerhalb einer Definition erzeugt keinen Unterschied
lcoConditionalFormatsVergleicht bedingte Formatdefinitionen in gespeicherter Reihenfolge, einschließlich effektiver Priorität, Stop-if-true-Verhalten, Zielbereichen, Formeln, differentieller Stile und unterstützter Farbverlauf-, Datenbalken- und Symbolsatz-Einstellungen; Stilpool- und Indexpaletten-Identifikatoren lösen zu ihren semantischen Werten auf
lcoTablesPaart Tabellen über Namen und vergleicht Bereiche, Kopfzeilen, Summen, Stileinstellungen, Kommentare, Spaltennamen, Bezeichnungen, Formeln, Array-Flags, eindeutige Namen, Verbindungsnamen, Filterkriterien und Sortierbedingungen; Tabellen-IDs, Spalten-IDs und Einfügungsreihenfolge erzeugen keine Unterschiede, während Farbfilter- und Sortier-Differentialstil-IDs sich zu ihrem Erscheinungsbild auflösen
lcoDrawingsVergleicht typisierte Zeichnungsdefinitionen in Zeichnungsreihenfolge und behält Gruppenkind-Reihenfolge und Diagramm-Plotgruppen-Reihenfolge bei; unterstützte kanonische Definitionen umfassen Bilder, Textfelder, Diagramme, Gruppen, vollständige typisierte Slicer-Ansichten und typisierte Timeline-Ansichten, wobei opake oder nicht unterstützte Zeichnungsknoten EXLSSemanticSnapshot auslösen
lcoBlankStyleRegionsVergleicht aufgelöste Basisstile über Koordinaten ohne gespeicherte Zelle auf beiden Seiten, einschließlich Arbeitsblatt-Defaults und virtueller Stil-Overlays; äquivalente Rechteckunterteilungen vergleichen gleich, und gleiche benachbarte Änderungen verdichten sich zu Rechtecken, ohne Zellen zu materialisieren
lcoRichTextRunsVergleicht effektive Run-Schriftarten und -Text an passenden gespeicherten Textzellen, erbt die Basisschrift für ausgelassene Run-Eigenschaften, ignoriert leere Runs und verdichtet benachbarte Runs mit gleichen effektiven Schriftarten; einfacher Text passt zu einem äquivalenten Rich-Text-Run mit Standardschrift
lcoPivotTablesPaart typisierte PivotTable-Definitionen über Namen und vergleicht Quellbindungen, Layout, Felder, geordnete Ansichtsmember, Datenaggregationen, Filter, Gruppierungsreferenzen, berechnete Definitionen, Stile und native Materialisierungs-Flags; Cache- und Shared-Member-IDs lösen sich zu Quellidentitäten und typisierten Werten auf
lcoPivotCachesPaart lokale typisierte PivotCache-Definitionen über Quellidentität und vergleicht Refresh-Metadaten, Feldmetadaten, gruppierte Bezeichnungen und Bereiche, ungeordnete Shared-Member-Domänen und geordnete typisierte Datensatzwerte; numerische, Text-, Boolean-, Datums-, Fehler- und leere Member bleiben unterschieden, Datumswerte behalten binary64-Präzision, und Cache-IDs sowie die Slot-Reihenfolge von Shared-Membern erzeugen keine Unterschiede
lcoSlicerStatePaart benannte Slicer-Ansichten und -Caches, einschließlich Tabellenspalten- oder Non-OLAP-Pivot-Bindungen, verbundener PivotTable-Namen, typisierter Member-Auswahlen, Cross-Filter- und Sortiereinstellungen, Beschriftung, Scrollposition, Spaltenlayout, Abmessungen, Stil, Sperren- und Beschriftungsflags sowie Ankergeometrie; Bindungen lösen Tabellen-, Spalten-, Blatt- und Cache-IDs auf
lcoTimelineStatePaart benannte typisierte Timeline-Ansichten und lokale Non-OLAP-Caches, einschließlich Quellfeld- und verbundener PivotTable-Bindungen, aktiver Datumsauswahl, Beschriftung, Ebene und Arbeitsblattgrenzen; inaktive Auswahlen lassen ungenutzte Datumsendpunkte weg

Options hat den Typ TlxCompareOptions, eine Menge von TlxCompareOption; das Aktivieren einer Option ergänzt ihre Unterschiede zum Standardvergleich

SetFeatureLimits(MaxBytes, MaxItems) validiert beide positiven Limits, bevor eine der Einstellungen geändert wird; MaxFeatureBytes steht standardmäßig auf 64 MiB und MaxFeatureItems auf 1.000.000, und die einzelnen Setter wenden dieselbe atomare Validierung an

Feature-Budgets decken die aggregierten entkoppelten kanonischen Bytes und gezählten Einträge aus beiden Arbeitsmappen ab, einschließlich Rich-Text-Runs, Filter-XML-Knoten, Pivot-Feldern, Domänenmembern und Datensatzwerten sowie Slicer- oder Timeline-Verbindungen; Reader prüfen Zähler und große Texteingaben, bevor sie natives XML konstruieren, erzwingen begrenzte Ausgabeströme und lösen EXLSXSemanticBudget aus, wenn ein Limit überschritten wird

SetNumericTolerance(AbsoluteTolerance, RelativeTolerance) validiert beide Argumente, bevor eine der Einstellungen geändert wird; beide müssen endlich und nichtnegativ sein, und die einzelnen Setter für AbsoluteTolerance und RelativeTolerance verwenden dieselbe Validierung

Numerische Literal- und Cache-Werte vergleichen gleich, wenn ihre absolute Differenz höchstens AbsoluteTolerance beträgt oder ihre Differenz relativ zum größeren Absolutbetrag höchstens RelativeTolerance ist; eine Schwelle von null behält exakte Gleichheit bei, die relative Berechnung vermeidet Overflow bei extremen Gegenwerten, und Toleranz koerziert keinen Text und gilt nicht für Datumswerte, Stile oder Geometrie

LeftName und RightName setzen optionale Anzeigenamen, die Report-Zeilen verwenden, standardmäßig left und right; die Namen wirken nur auf die Berichterstattung, nicht auf Blattpaarung oder Vergleich

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 liefert die Differenzanzahl, Count liest diese Zahl danach, und Diff(Index) verwendet nullbasierte Indizierung und liefert einen Comparer-eigenen TlxCompareDiff; behalten Sie den Comparer beim Lesen seiner Einträge, und holen Sie Einträge nach einem weiteren erfolgreichen Vergleich neu

Jeder Eintrag bietet Kind, Sheet, 1-basierte Row und Col wo anwendbar, Ref, LeftText, RightText sowie typisierte LeftKind-/ RightKind-Werte; TlxCompareValueKind enthält lcvNone, lcvBlank, lcvNumber, lcvText, lcvBoolean, lcvDateTime, lcvError und lcvFormula, wobei lcvNone für eine abwesende Seite oder einen Nicht-Wert-Unterschied steht

TlxCompareKind behält lckSheetAdded, lckSheetRemoved, lckCellAdded, lckCellRemoved, lckValueChanged, lckFormulaChanged, lckMergeAdded und lckMergeRemoved und ergänzt lckFormulaCacheChanged, lckStyleChanged, lckRowGeometryChanged und lckColumnGeometryChanged

Stilunterschiede tragen stabile kanonische Stil-Fingerprints in LeftText und RightText; Geometrieunterschiede tragen den verglichenen Zustand von Größe, Ausgeblendet, Gliederung und Zusammengeklappt, wobei Ref das betroffene zusammenhängende Achsintervall identifiziert, bei Zeilen Row auf dessen erste Zeile und Col auf null gesetzt ist, bzw. bei Spalten Col auf dessen erste Spalte und Row auf null

Feature-Unterschiede verwenden lckDefinedNameChanged, lckDataValidationChanged, lckConditionalFormatChanged, lckTableChanged, lckDrawingChanged, lckPivotTableChanged, lckPivotCacheChanged, lckSlicerChanged oder lckTimelineChanged; Change ist lccChanged, lccAdded oder lccRemoved, und jede vorhandene Seite trägt ihren kanonischen Definitions-Fingerprint, während eine abwesende Seite einen leeren String trägt

lckRichTextChanged identifiziert eine geänderte Run-Definition an ihrer Zellkoordinate und trägt kanonische Run-Fingerprints in LeftText und RightText; numerische Toleranz gilt für Zellliterale und Formel-Caches, während typisierte Feature-Definitionen exakt verglichen werden

Feature-Referenzen identifizieren Namen mit Geltungsbereich oder Tabellennamen oder verwenden 1-basierte Sequenzpositionen für Validierungs-, bedingte Format- und Zeichnungsdefinitionen; das Einfügen oder Verschieben eines geordneten Features kann mehrere Positionen ändern, während Arbeitsmappen-Nameseinträge ein leeres Sheet haben

lckBlankStyleRegionChanged identifiziert ein geändertes leeres Rechteck über Row, Col, inklusive LastRow und LastCol sowie seine A1-Ref; gespeicherte Koordinaten behandeln der gewöhnliche Zellvergleich und lcoCellStyles — aktivieren Sie also beide Stiloptionen, um gespeicherte Zellen und leere Bereiche gemeinsam zu inspizieren

Describe formatiert einen Eintrag, während Report(List) die formatierten Einträge an eine aufrufereigene TStrings-Liste anhängt; eine typisierte Wertänderung schließt Typbezeichnungen ein, wenn sich die Typen unterscheiden, und Ergebnisse sortieren nach Blattname, Zeile, Spalte, Unterschiedsart und Referenz statt nach Zelleinfügungsreihenfolge

Der Vergleich hält Leseleases, durchläuft gespeicherte Zellen über entkoppelte Cursor-Snapshots und behält gepackten Speicher; Geometrie partitioniert gespeicherte Metadatengrenzen und kompakte wiederholte Zeilenspannen, während der Leerstil-Vergleich aktive Rechteck- und gespeicherte Zellgrenzen abtastet, ohne ein rechteckiges Millionenzeilen-Raster zu scannen; der Aufwand wächst mit gespeicherten Features, Regionsschnittmengen und gemeldeten Unterschieden

Ein fehlgeschlagener Vergleich bewahrt das vorherige erfolgreiche Ergebnis; eine invalide Toleranzzuweisung bewahrt ebenfalls die vorhandenen Einstellungen und das Ergebnis, während die Übergabe einer nil-Arbeitsmappe das Ergebnis leert und null zurückgibt

Dieser Vergleich deckt den gespeicherten Zellinhalt der XLSX-Fassade und ausgewählte typisierte Feature-Definitionen ab; die Schreibweise von Namen, Validierungs-, bedingten Format-, Tabellen- und Diagrammformeln normalisiert über den semantischen Formelparser, während Pivot-berechnete Formeln ihren gespeicherten Definitionstext behalten

Tabellenfilter akzeptieren unterstützte benutzerdefinierte, Wertlisten-, Datumsgruppen-, Farb-, Symbol-, dynamische und Top-Count-Formen sowie Sortierbedingungen; unabhängige Filterspalten und Wertmengen-Einträge normalisieren ihre Reihenfolge, Boolean-Defaults und numerische Schreibweisen normalisieren, und die Reihenfolge von Sortierbedingungen bleibt signifikant

Typisierter Pivot-, Slicer- und Timeline-Vergleich löst unterstützte lokale Arbeitsblattquellen und Non-OLAP-Bindungen auf, ohne Verfügbarkeit zu aktualisieren oder auszuwerten; native Slicer-Verfügbarkeitshinweise sind abgeleitete Anzeigemetadaten, während Member-Auswahlen und erkannte native Sortiermetadaten verglichen werden

Opake native Zeichnungseigenschaften, unvollständige binäre Pivot-Modelle, externe oder OLAP-Pivot-Quellen, rohe PivotTable-Ergänzungsdatensätze und -Erweiterungs-XML, unbekanntes Filter-XML sowie nicht modellierte Slicer- oder Timeline-Erweiterungsattribute oder -Kinder lösen EXLSSemanticSnapshot aus; die Bewahrung solcher Daten impliziert keine semantische Äquivalenz

Ausgewählte importierte PivotTable- und PivotCache-Features validieren zusätzlich bewahrtes natives XML, bevor die typisierte Projektion verglichen wird, einschließlich verschachtelter Feldmetadaten und Cache-Datensätze; unbekannte Namespaces, Attribute, Kinder und Erweiterungs-Payloads schlagen innerhalb derselben kooperativen Feature-Limits explizit fehl, während modellierte Slicer-Cache-Bindungen unterstützt bleiben

TSimpleDomNode.RawName legt den ursprünglichen Element-QName neben dem lesernormalisierten Name offen und ermöglicht so namespace-sensible Inspektion, ohne das vorhandene Parser-Namen-Matching zu ändern

Arbeitsmappeneinstellungen und opake Paketmetadaten bleiben außerhalb des Vergleichs; der Basisstilvergleich wertet weder das Erscheinungsbild bedingter Formate noch das von Tabellenstilen aus, und der Zeichnungsvergleich bewahrt die unterstützten Bild-, Textfeld-, Diagramm- und geordneten-Gruppen-Grenzen des semantischen Snapshots

Effektive Rich-Text-Eigenschaften

TMsoFbtOpt.StoredPids liefert gespeicherte OfficeArt-Eigenschaftsbezeichner in sortierter Reihenfolge, während TMsoFbtSp.PersistentFlags native Shape-Flags offenlegt, ohne Eigenschaften oder Anker zu allokieren

TMsoShapeContainer.HasPreservedObjectData identifiziert bewahrte OBJ-Schwanz-Bytes; HasOrdinaryEmbeddedPictureObjectData prüft, dass Bildschwänze nur erkannte Clipboard-Format- und Null-Bildflag-Datensätze enthalten, und weist verlinkte oder unbekannte Datensätze ohne Kopieren der Payload zurück

TMSOShapeTextBox.HasValidTextRuns prüft gespeicherte TXO-Run-Grenzen und reservierte Felder, ohne Runs zu erzeugen; TMsoDrawing.HasUnmodeledAppearance identifiziert native Zeichnungsdaten, die der typisierte Parser überspringt, sodass die Erfassung ungelöste Darstellung explizit zurückweisen kann

TXLSXRichTextRun.BoldSet, ItalicSet, StrikethroughSet, UnderlineSet, VertAlignSet und ColorSet unterscheiden geerbte Schrift-Eigenschaften von expliziten Overrides, einschließlich false-Flags, none, Baseline und automatischer Farben; Setter markieren die Eigenschaft als explizit, selbst wenn ihr Wert dem anfänglichen Default des neuen Runs entspricht

TXLSXRichText.HasUnsupportedAppearance meldet native Rich-Eigenschaften, die das typisierte Run-Modell nicht darstellen kann; portable Erfassung und effektiver Rich-Text-Vergleich weisen solche Runs explizit zurück, während unterstützte Shared-/Inline-Run-Eigenschaften und Whitespace ihre importierte Semantik behalten

Der effektive Rich-Text-Vergleich wendet explizite false-Overrides an, bevor benachbarte gleiche Runs verdichtet werden; geerbte und explizit gelöschte Eigenschaften bleiben bei der Shared-String-Deduplizierung und unterstützten XML-Roundtrips unterschieden

TXMLReader.ResolveNamespaceUri(Prefix, Uri) löst die aktuell im Geltungsbereich liegende Namespace-Bindung auf, ohne die Leserposition zu ändern, und liefert false, wenn keine Bindung existiert; ein leerer Präfix fragt den Standard-Namespace an, und rohe QNames bleiben für namespace-sensible Inspektion verfügbar

Die unveränderlichen Rich-/Scene-Datensätze, die Capture-Source-Erweiterung und der HXRSNP02-Übertragungsvertrag sind in Portable Headless-Ausgabe beschrieben

Entkoppelte Stil- und Achseninspektion

TXLSXWorksheet.ReadSemanticCellStyle(Row, Col) liefert einen entkoppelten TXLSSemanticCellStyle für gültige 1-basierte Koordinaten und löst gespeicherte und gepackte Stile, Arbeitsblatt-Defaults, anwendbare Stil-Overlays, implizite Datumsformate, Indexpalettenfarben und Designfarben auf, ohne Zellen zu materialisieren oder Stilpools zu ändern; der öffentliche Aufruf erwirbt eine Leselease und schließt Regeln bedingter Formate und Tabellenstile aus

TXLSXWorksheet.GetStoredAxisSpans(IsRow) liefert TXLSXAxisSpans, ein Array aus TXLSXAxisSpan-Datensätzen mit inklusiven 1-basierten FirstIndex und LastIndex; er meldet Metadaten-Fußabdrücke für Größe, Ausgeblendet, Gliederung und Zusammengeklappt, bewahrt kompakte wiederholte Zeilenhöhen-Spannen und hält den effektiven Standard des Arbeitsblatts über dessen gewöhnliche Eigenschaften verfügbar

Die zurückgegebenen Spannen beschreiben gespeicherte Metadaten-Fußabdrücke statt einer disjunkten normalisierten Partition; Anwendungen, die zwei Achsen vergleichen, können deren erste und letzte Grenzen kombinieren und dann den effektiven Zustand einmal pro resultierendem Intervall inspizieren

TXLSXWorksheet.GetStoredStyleRegions liefert entkoppelte TXLSXStyleRegions mit inklusiven FirstRow, FirstCol, LastRow- und LastCol-Grenzen für kompakte Fußabdrücke virtueller Formatierung; diese Fußabdrücke können sich überlappen, und Aufrufer lesen ihr effektives Erscheinungsbild mit ReadSemanticCellStyle

TXLSXWorkbook.ReadSemanticFeatures(Kind, Sheet, MaxBytes, MaxItems) liefert entkoppelte TXLSXSemanticFeatures-Einträge mit stabilem Key, kanonischen Definition-Bytes und gezähltem ItemCount; optionale positive Limits stehen standardmäßig bei 64 MiB und 1.000.000 Einträgen

TXLSXSemanticFeatureKind enthält xlsxSemanticDefinedNames, xlsxSemanticDataValidations, xlsxSemanticConditionalFormats, xlsxSemanticTables, xlsxSemanticDrawings, xlsxSemanticPivotTables, xlsxSemanticPivotCaches, xlsxSemanticSlicers, xlsxSemanticSlicerCaches, xlsxSemanticTimelines und xlsxSemanticTimelineCaches

Definierte Namen und die drei Cache-Arten verwenden arbeitsmappenweiten Geltungsbereich und erlauben ein nil-Blatt; die anderen Arten verlangen ein zur Arbeitsmappe gehörendes Arbeitsblatt, Regeln und Zeichnungen behalten ihre gespeicherte Sequenz, und zurückgegebene Arrays und Puffer sind Kopien im Eigentum des Aufrufers; diese Reader erwerben Leseleases und erben die typisierte Abdeckung und das explizite Verhalten bei nicht unterstützten Daten wie oben beschrieben

TXLSXWorksheet.ReadSemanticRichText(Row, Col, IncludePlainText, MaxBytes, MaxItems, ConsumedItems) liefert entkoppelte kanonische Run-Bytes für 1-basierte Koordinaten oder einen leeren Puffer, wenn kein Rich-Text existiert und IncludePlainText false ist; das optionale ConsumedItems: PInteger empfängt die erfasste Run-Anzahl, und Plain-Text-Erfassung behält gepackten Speicher

TXLSPivotCacheField.GroupItemTypes[Index] legt die typisierte Art offen, die GroupItemLabels[Index] entspricht, und weist einen Index außerhalb der gespeicherten gruppierten Bezeichnungsdomäne zurück

Formelmetadaten- und Pivot-Abfrage-Callbacks

TXLSGetCellFormulaText und TXLSCalculator.OnGetCellFormulaText lesen gespeicherten Ausdruckstext mit einem 1-basierten SheetIndex und nullbasierten Row/Col, liefern lxOk oder einen typisierten Fehlercode und beachten formelverborgenen Schutz; TXLSGetPivotTable und OnGetPivotTable lokalisieren eine geliehene Tabelle über 1-basierten SheetIndex und nullbasierte Bereichskoordinaten

Die Arbeitsmappen-Engines verdrahten diese optionalen Callbacks in normalen, schreibgeschützten und isolierten Berechnungskontexten; Callbacks berechnen keine Ziele neu, aktualisieren keine Pivot-Quellen und übertragen kein Eigentum

TXLSPivotDataConstraint speichert einen FieldName und ein typisiertes Item, wobei TXLSPivotDataConstraints Feld-/Element-Paare sammelt; TXLSPivotTable.GetDataValue fragt ein sichtbares unterstütztes Aggregat aus einem entkoppelten lokalen Tabellen-/Cache-Snapshot ab, und IntersectsQueryRange verwendet 1-basierte Arbeitsblattgrenzen einschließlich modellierter Berichtsfilter-Zellen

TlxPivotQueryBudget empfängt Work- und Speicherschätzungen synchron und liefert, ob die Auswertung fortgesetzt werden kann; EXLSPivotQueryBudget und EXLSPivotQueryUnsupported unterscheiden erschöpfte Limits von nicht unterstützten Cache- oder Aggregatmodellen

TXLSPivotCache.QueryModelIsComplete zeichnet die Dekodier-Bereitschaft der Abfrage unabhängig von der Vollständigkeit der BIFF-Rohwiedergabe auf; QueryRecordsValid legt die Gültigkeit importierter Datensätze offen, und SetQueryRecordValidity wendet die Format-Reader-Präzedenz an, ohne Datensätze zu aktualisieren

Explizite Codepage-Bytes

MemberVertrag
XlsEncodeCodePage(Text, CodePage, MaxBytes = -1)Liefert RawByteString mit exakten Bytes in einer expliziten, nonzero byteorientierten Seite, bewahrt eingebettete Nullen, verifiziert die Unicode-Roundtrip-Identität und löst EConvertError für nicht darstellbaren Text aus; ein nichtnegatives MaxBytes behält das längste vollständige Zeichenpräfix, das passt, während -1 die Länge unbegrenzt lässt; die Validierung deckt den Originaltext vor der Kürzung ab
XlsDecodeCodePage(Bytes, CodePage)Liefert WideString aus der expliziten Bytekodierung und bewahrt eingebettete Nullen; fehlerhafte Bytefolgen folgen dem Verhalten des installierten Dekoders; Seite 0 und UTF-16-Seite 1200 werden zurückgewiesen, weil diese API keine ANSI-Locale erschließt und keinen UTF-16-Bytestrom verarbeitet
TXLSBlob.GetCompressedUnicodeString(Index, Count)Liefert exakte BIFF8-komprimierte Unicode-Codeeinheiten von U+0000 bis U+00FF, bewahrt eingebettete Nullen, validiert den angeforderten Bytebereich und interpretiert diese Bytes nicht über eine Codepage
TXLSBlob.AddRawStringHängt exakte kodierte Bytes ohne AnsiString-Codepage-Konvertierung an und aktualisiert DataLength; eine leere Eingabe hängt keine Bytes an
TXLSCalculator.CodePage, TXLSFormula.FCodePageWählen die explizite Legacy-Formel-Bytekodierung, standardmäßig CP1252; die besitzende Classic-Arbeitsmappe synchronisiert ihren Calculator bei der Initialisierung oder beim Aufruf von SetCodePage
TXLSFontList.GetFont, TXLSNumFormatList.GetNumFormatBlob, TXLSStyles.GetStyleBlobDas optionale CodePage-Argument steht standardmäßig auf 1252 und kodiert BIFF5-Text; BIFF8-Ausgabe bleibt Unicode
TMsoDrawing.StoreNotesDas optionale CodePage-Argument steht standardmäßig auf 1252 und kodiert Kommentartext vor Unicode; das vorhandene Größenlimit des BIFF5-Datensatzes für gewöhnliche Kommentare bleibt; dies fügt keine Autor-, Rich-Text- oder Geometriefelder hinzu, die in diesem Datensatzformat fehlen
TXLSCustomName.SetSourceDataDie optionalen FileFormat- und CodePage-Argumente identifizieren importierte rohe NAME-Bytes und stehen standardmäßig auf xlExcel97 und 1252; rohe Datensätze werden nur wiederverwendet, wenn deren Format und Legacy-Kodierung der angeforderten Ausgabe entsprechen
TXLSFormulatArrayItem.GetDataSize, TXLSFormulatArray.GetDataSize, TXLSFormulatArray.GetData, TXLSFormulatArrays.GetDataSize, TXLSFormulatArrays.GetData, TXLSCompiledFormula.GetExternalDataDas optionale ACodePage-Argument steht standardmäßig auf 1252; Größe und Ausgabe von Legacy-String-Arrays verwenden dieselbe Anzahl kodierter Bytes, während BIFF8-Strings Unicode bleiben

Übergeben Sie den zurückgegebenen RawByteString direkt an AddRawString oder eine byteorientierte Stream-Operation; die Konvertierung in einen Default-AnsiString kann seine Bytes auf nativen FPC-Systemen umkodieren

Klassische definierte Namen und Array-Formelblöcke

TXLSCustomName deferred compilationClearDefinition gibt den kompilierten RefersTo-AST frei und behält den gespeicherten Definitionsstring sowie etwaige rohe importierte NAME-Bytes, Compile baut den AST aus der gespeicherten Definition neu auf und meldet den Erfolg, und GetCompiledFormula kompiliert automatisch neu, sodass ein gelöschter Name bei seinem nächsten Lesevorgang neu aufgelöst wird; PeekCompiledFormula liefert den aktuellen AST, ohne diese Neukompilierung auszulösen, und StoredDefinition legt die nicht geparste Definitionsquelle offen
TXLSCustomName identity and flagsStoreIndex legt die Speicherposition des Namens innerhalb seiner Sammlung offen, NameID seine arbeitsmappeneindeutige numerische Identität, wie die Berechnungs-Engine sie verwendet, und IsHidden sowie IsMacro lesen und schreiben die Hidden- und Macro-Flags des BIFF-NAME-Datensatzes
TXLSFormulatArray.RowsCount, ColsCountMelden die Zeilen- und Spaltenausdehnung des geparsten Array-Formelblocks; beide starten bei eins und begrenzen die Domäne der Pro-Zelle-Elemente, die die Emissionsmethoden tragen

Klassische Schrift-, Format- und Stilpools

TXLSFontList stored font attributesIndizierte Eigenschaften spiegeln den gespeicherten Schriftschlüssel an einem nullbasierten Listenindex: Name, Size, ColorIndex, Bold, Italic, Strikethrough und Underline gesellen sich zu OutLineFont, Shadow, SubScript, SuperScript, Family und CharSet für die schreibgeschützte Inspektion
TXLSNumFormatList.AddValue, FmtExistsAddValue registriert einen Format-String und liefert seinen Index, mappt eingebaute Formatschreibweisen auf ihre kanonischen IDs und markiert Datums- und Zeitformate; FmtExists meldet, ob ein benutzerdefinierter Format-String bereits registriert ist
TXLSNumFormatList.IsDateFormat, IsDateFormatValueIsDateFormat meldet, ob das an einem Index gespeicherte Format als Datums- oder Zeitformat markiert ist, während IsDateFormatValue einen Format-String direkt auf Datums- und Zeit-Tokens prüft
TXLSStyles.AddStyle, AddBuiltinStyleAddStyle registriert einen benannten benutzerdefinierten Zellstil, gebunden an einen XF-Datensatzindex, und AddBuiltinStyle registriert einen eingebauten Zellstil über seine eingebaute ID zusammen mit der Gliederungsebene, die Zeilen- und Spaltenebenenstile verwenden
TXLSStyles.BuiltinStyleNameKlassenfunktion, die den kanonischen Excel-Anzeigenamen des eingebauten Zellstils für eingebaute IDs 0 bis 53 liefert; außerhalb des Bereichs liegende IDs liefern einen leeren Namen, damit Writer auf die rohe Builtin-Byteform zurückfallen

Paket- und Binärspeicher-Hilfsfunktionen

TXLSXOpaquePackageLoadWorkbookXmlMetadata erfasst den XML-Zustand auf Arbeitsmappenebene, MarkAllPartsClean setzt Dirty-Flags zurück, und WorkbookExtLstXml zusammen mit WorkbookRootAttributesXml legt die erhaltenen Arbeitsmappen-XML-Fragmente offen; IsDiscardedPart meldet, ob ein Teilname durch eine Verwerfungsoperation wie die Web-Add-In-Bereinigung entfernt wurde
TXLSFileStorageLoad, LoadFolder, Writeund WriteFolder übertragen Compound-File-Inhalte; Child und Count zählen untergeordnete Einträge auf, jeder ein TXLSFileItem — ein benannter Speicherknoten, dessen TXLSFileStream -Unterklasse die gespeicherten Bytes als TXLSBlob trägt, wobei DataSize die Payload-Länge meldet
TXLSBlobAdd hängt einen weiteren Blob an, während AddByte, AddWord, AddLong, AddDouble, AddStringund AddWideString typisierte Werte anhängen; CopyData, CopyMem, FillByte, Write, Clear, Resetund Dump verwalten den Inhalt; Buff und DataLength legen den Speicher offen
TXLSBlobListAppend, AppendList, CopyDataund Write kombinieren oder geben Einträge aus; Entries und TotalSize legen den Listenstatus offen
TXLSWideStringBuilderAddString hängt Text an, und Length meldet die angesammelte Zeichenzahl

Zeichnungs- und Arbeitsmappen-Viewer-Ergänzungen

TXLSFillFormatPictureFill konfiguriert eine bildbasierte Formfüllung, während FillType die Füllart (einfarbig, Verlauf, Bild oder voreingestellte Textur) wählt, die der Writer ausgibt
TXLSShapesAddScrollBar und AddSpinner erstellen Formularsteuerelemente — die zurückgegebenen Objekte TXLSScrollBar und TXLSSpinner legen die Steuerelementgeometrie und die verknüpfte Zelle offen, und der Spinner ergänzt Min, Maxund Inc als Schrittweiten-Grenzen —, während RegisterScrollBar und RegisterSpinner aus einer Arbeitsmappe geladene Steuerelemente registrieren
TXLSWorkbookViewerCanUndo und CanRedo melden die Verfügbarkeit der Transaktionshistorie; ClearSelectedRange, CopySelectedRange, PasteSelectedRange und PasteText wirken auf den ausgewählten Bereich, während ReferencePickMode die interaktive Auswahl von Zell- oder Bereichsreferenzen aktiviert
TXLSWorkbookEditHistoryDie Headless-Inhaltstransaktions-Engine in lxWorkbookViewer bindet eine geliehene Classic- oder XLSX-Arbeitsmappe und bietet Bereichsschutz-Preflight, Unicode-Textkopie und -einfügung, Bereichslöschung sowie eine Undo/Redo-Transaktion pro Operation; siehe Headless-Editing-Transaktionen
TXLSCellContentSnapshotBeide Arbeitsblattklassen legen ReadCellContent(Row, Col) und RestoreCellContent(Snapshot) für entkoppelte native Inhalts-Erfassung und -Wiederherstellung an 1-basierten Koordinaten im Ursprungsarbeitsblatt offen; die Erfassung wertet keine Formeln aus, erzeugt keine abwesenden Zellen und materialisiert keinen gepackten Speicher, und die unveränderliche NativeData-Payload bewahrt Rich-Text, Formel-Caches und den Zellstil; die direkte Wiederherstellung ist eine Low-Level-Operation, deren Aufrufer Schutz und strukturelle Grenzen validieren muss

Paginierung, Bildausgabe und Drucken

XLSValidateCachedChartSceneModel, XLSRecordCachedChartSceneFühren ein Preflight für gecachte Diagrammmetadaten durch, ohne Zellen aufzulösen, und zeichnen begrenzte Vektor- und Textprimitive für ein entkoppeltes Diagramm in lxPortableChart auf, mit TXLSPortableSceneObjects sowie Item-, Byte- und Textabrechnung; die lxPagination-Einstiegspunkte behalten dieselbe gemeinsame Implementierung für vorhandene Windows-Aufrufer; die aktuelle Teilmenge umfasst gewöhnliche Säulen-, Balken-, Linien-, Punkt-, Kreis-, Ring- und Einscharenflächen-Diagramme mit einer primären Plotgruppe, und die Aufzeichnung verlangt validierte native Metadaten, endliche streng geordnete Cache-Punkte und ein nicht angehängtes Diagrammmodell; siehe Cached-Chart-Aufzeichnung
TXLSGraphicsBackendDrawTiledImage malt einen Blatthintergrund wiederholt über den beschnittenen Seitenbereich
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBordersund PaintPageBackground steuern den Seiteninhalt; RenderDPI, RenderColorModeund RenderSession geben Auflösung, Farbverarbeitung und die aktive Render-Sitzung frei
TXLSCellImageExporterMeasure berechnet Pixeldimensionen für Classic- oder XLSX-Bereiche; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaintund PaginationModel konfigurieren und beobachten das Rendering
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColorund TransparentBackground übernehmen dieselben Paint-Hooks und sicheren Ausgabelimits für den seitenweisen Bildexport
TXLSPrintDocumentPrintWorksheet, PrintWorkbookund PrintAllVisibleSheets senden Classic- oder XLSX-Inhalte an den VCL-Drucker; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPageund OnAfterGeneratePage steuern den Druckauftrag

Classic-Diagrammmodelle und Diagrammobjekte im Arbeitsblatt

TXLSXChartSeriesLineVisible, LineColorRGB und LineWidthPoints beschreiben einen unabhängigen Serienstrich; LineStyleSet, LineColorSet und LineWidthSet bewahren explizite Einstellungen, und EffectiveLineVisible löst die Legacy-Konvention Nur-Füllung auf; MarkerFillSet und MarkerBorderSet unterscheiden explizites Schwarz von automatischen Markerfarben, während die portable Aufzeichnung von Linien- und Punktdiagrammen Kreisdurchmesser von 2 bis 72 Punkten unterstützt; Farb- und Breiten-Setter validieren vor der Mutation und folgen den Leseleases der Arbeitsmappe
TXLSChartSeriesAddTrendline und AddErrorBars erstellen typisierte Reihenanmerkungen, während TrendlineCount und ErrorBarCount die Größe ihrer Sammlungen melden; das vorhandene MarkerSize-Feld behält rohe BIFF-Twips, während der schreibgeschützte MarkerSizePoints-Getter diesen Wert geteilt durch 20 liefert, einschließlich fraktionaler Punktgrößen
TXLSChartAxisHasAxcExtFlag prüft ein rohes AXCEXT-Flag, ohne dass Aufrufer die Bitmaske dekodieren müssen
TXLSChartModelAxisGroupCount meldet die Anzahl primärer und sekundärer Achsengruppen, die aus dem Diagramm dekodiert wurden
TXLSCustomChartAddAreaData fügt ein vorbereitetes Bereichselement für die erneute Formelbindung beim Speichern an, und ApplyDateAxisModel überträgt ein typisiertes Datumsachsenmodell auf die rohen Diagrammdatensätze; GetStoredRecordInfo liest eine nullbasierte Datensatz-ID und Byteanzahl ohne Allokation, während ReadStoredRecord(Index, MaxBytes) das Byte-Limit prüft, bevor entkoppelte Bytes in TXLSChartStoredRecord zurückgegeben werden — ohne Formeln auszuwerten oder Caches zu ändern
TXLSWorksheetAddChartObject verankert einen Diagrammrahmen im Arbeitsblatt und verbindet ihn mit dem gemeinsamen Diagrammbuilder
TXLSXChartLayoutResolverTryResolve löst ein Layoutrechteck mit optionaler Größenprüfung auf, und ResolveChart berechnet Rechtecke für Diagramm, Titel, Legende, Plotbereich und Achsen

Typisiertes Diagramm-Dekodiermodell

Der dekodierte Diagrammzustand liegt als schlichte Datensätze und Enums vor, sodass Inspizierungscode nie rohe BIFF-Datensätze durchlaufen muss: TXLSChartInfo trägt die dekodierte Diagrammzusammenfassung mit TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), jede Reihe meldet TXLSChartSeriesType, und TXLSChart3DState zusammen mit TXLSChart3DInfo beschreibt dreidimensionale Ansichten. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) und TXLSChartLegendPosition klassifizieren Achsen und Legenden, während das Datumsachsenmodell TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) und TXLSChartDateValuesverwendet. TXLSCustomChart legt das dekodierte Modell über TXLSChartInfooffen; Trendlinien- und Fehlerindikator-Anmerkungen sind typisierte Objekte (TXLSChartTrendline, TXLSChartErrorBars), die von jeder Reihe aus erreichbar sind

Diagramm-Authoring-Datensätze

Das Authoring von Diagrammblättern und über den Builder akzeptiert schlichte Datensätze statt Objektgraphen: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfound TXLSChartSeriesStyleInfo füllen die Reiheneinträge, die an TXLSWorksheets.AddChartSheet und den gemeinsamen Diagrammbuilder übergehen, und TXLSPivotChartInfo beschreibt das Pivot-Chart-Framing, das beim Anhängen eines Diagramms an eine PivotTable verwendet wird

Classic-Inspektion von Diagrammfüllungen

TXLSCustomChart.GetChartModel dekodiert unterstützte native OfficeArt-Eigenschaftstabellen und tertiäre Eigenschaftstabellen in GelFrame-Datensätzen, einschließlich Eigenschaften nach Einträgen mit komplexer Payload; die vorhandene Builder-Repräsentation bleibt unterstützt, und fehlerhafte Tabellengrenzen lassen die vorherige typisierte Füllung unverändert und melden den nicht unterstützten Datensatz

Die Diagramminspektion validiert die vollständige gespeicherte Text- und Annotations-Payload, bevor typisierter Zustand ergänzt wird: abgeschnittene Trendlinien-Namen oder Datenbeschriftungs-Trenner melden ihre Datensatz-ID über _UnsupportedSemanticRecordID, während nil oder unterdimensionierte SeriesText-Header diesen Datensatz für BIFF5 und BIFF8 als nicht unterstützt melden; eine deklarierte SeriesText-Ausdehnung, die ihre Payload überschreitet, löst EReadError aus, gibt das Teilmodell frei und lässt die gespeicherten Diagrammdatensätze unverändert

Der Marker-Getter und die Füllungsinspektion bewahren die rohe Diagrammspeicherung; der Pfad der deklarierten Darstellungserfassung validiert unterstützte Kern-Diagramme separat, während nicht verifizierte Prüfsummen reicher Titel oder Shape-Erweiterungen nicht unterstützt bleiben

Begrenzte Reader für gespeicherte Diagramme, Strings und Schriftarten

TXLSChartStoredBytes ist ein entkoppeltes Byte-Array, und TXLSChartStoredRecord enthält RecordId und Data; diese Reader inspizieren zurückgehaltenen Quellspeicher, ohne ein dekodiertes Diagrammmodell zu erzeugen oder Formeln auszuwerten

TXLSCustomChart.GetStoredRecordInfoLiefert eine Datensatz-ID und gezählte Bytelänge für einen nullbasierten Datensatzindex, ohne seine Payload zu kopieren
TXLSCustomChart.ReadStoredRecordKopiert eine Payload, nachdem Index und nichtnegatives MaxBytes validiert wurden; das Standard-Byte-Limit ist High(Int64)
TXLSCustomChart.ReadStoredFormulaLeafInfoUntersucht ein kohärentes gespeichertes BRAI-Blatt mit dem exakten Quell-Calculator und nichtnegativen Byte- und Text-Quotas; fremde Calculator oder Übersetzungs-Owner liefern ein nicht unterstütztes Blatt, und AllowUnboundBiff ist standardmäßig False
TXLSCustomChart.ReadStoredFormulaLiteralLiefert ein entkoppeltes Literal erst nach denselben Herkunfts- und Quota-Prüfungen; ein nicht unterstütztes Blatt löst EInvalidOperation aus
TXLSCustomChart.SourceBiffVersion, SourceCodePageSchreibgeschützte Herkunft der zurückgehaltenen Diagrammdatensätze
TXLSStringTable.GetStoredStringLength, ReadStoredStringZählt vorhandenen UTF-16-Speicher über die 1-basierte String-Identität der Tabelle und kopiert erst, wenn die nichtnegative Zeichen-Quota ihn abdeckt; ungültige Identitäten und unvollständiger UTF-16-Speicher werden zurückgewiesen
TXLSFontList.GetStoredNameLength, ReadStoredNamePrüft den gespeicherten Schriftschlüssel am nullbasierten Listenindex, bevor sein Name unter einer nichtnegativen Zeichen-Quota gezählt oder kopiert wird
TMsoFbtOptItem.HasStoredUnicodeStringPrüft begrenzte gespeicherte Metadaten mit komplexen Unicode-Strings, ohne einen String zu materialisieren
TMsoShapeContainer.HasOrdinaryChartObjectDataPrüft den gespeicherten Diagrammobjekttyp, eine nonzero Objektidentität, unterstützte Flags und das Fehlen unbekannter Objektschwanz-Daten

Wartung der Shared-String-Tabelle und SST-Ausgabe

TXLSStringTable in lxStringTable trägt die Shared Strings der klassischen Arbeitsmappe; die folgenden Member decken die Reader-seitige Registrierung, die Slot-Wartung und die rohe SST-Ausgabe für Roundtrip-Speicherungen ab

KeyExists, AddWithExtrasKeyExists meldet, ob ein String bereits einen Slot belegt; AddWithExtras ist das Reader-seitige Gegenstück zu Add und hängt die rohe rgRun-Rich-Text- und rgExtRst-Phonetic-Payload an den Eintrag an, ohne dessen Referenzzahl zu erhöhen, weil jede referenzierende Zelle die Zahl später über den normalen Add-Pfad wiederherstellt
Replace, ReplaceIndexReplace gibt eine Referenz am alten Slot auf — und gibt ihn frei, wenn seine Zählung null erreicht — und fügt den Text neu hinzu, wobei der resultierende Slot zurückgegeben wird; ReplaceIndex verschiebt eine Referenz vom alten zum neuen Slot, ohne Text zu kopieren
AddSSTData, InitExtIndexAddSSTData emittiert die rohe SST-Payload in die Blob-Liste des Writers; die Überladung mit einer Font-Run-Remap-Tabelle schreibt jeden FormatRun-Font-Index beim Ausgang um ([MS-XLS] §2.5.129), sodass Rich-Runs der Font-Neuordnung beim Speichern folgen, während eine leere Tabelle die Legacy-Wörtlich-Ausgabe behält, und InitExtIndex nummeriert die ExtSST-Buckets vor der Emission über lebende Slots
SlotCount, ExtIndex, ParsedExtSSTDsst, ParsedExtSSTItemCount, BiffSizeLimitSlotCount ist die 1-basierte Obergrenze für die Slot-Iteration, wobei gelöschte Slots leer lesen; ExtIndex löst einen Slot auf seine ExtSST-Bucket-Nummer auf oder -1 für einen nicht lebenden Slot; ParsedExtSSTDsst und ParsedExtSSTItemCount behalten importierte EXT/SST-Headerwerte, und BiffSizeLimit begrenzt jeden emittierten Datensatz-Chunk — der klassische Writer setzt ihn auf 2080 Bytes für BIFF5 und 8224 für BIFF8

PDF-Anhänge, Signaturen und HTML-Export

IXLSPDFAttachmentSourceWriteTo streamt Anhangbytes in den PDF-Export, ohne dass der Exporter die Quelldaten besitzen muss
TXLSPDFExportAttachmentDuplicatePolicy wählt die Behandlung doppelter Namen, AttachmentSpoolThreshold steuert das Spooling von Anhängen und DocumentLanguage schreibt die Dokumentsprach-Metadaten
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBoldund TextItalic konfigurieren das sichtbare Erscheinungsbild der Signatur
TXLSHTMLExportViewMode (Typ TXLSHtmlViewMode: aktuelle Ansicht oder vollständige Tabellenkalkulationstabelle) wählt die HTML-Darstellung, während HotTrackTargets (Menge aus TXLSHtmlHotTrackTarget) und HotTrackColor die interaktive Hervorhebung von Zellen und Objekten konfigurieren
TXLSXHtmlExportOptionsViewMode, HotTrackTargetsund HotTrackColor stellen die entsprechenden XLSX-HTML-Exportoptionen bereit

Berechnungsaudit und Arbeitsmappensteuerung

TXLSCalculationAuditReportTruncated meldet die Kürzung am Problemlimit, StackTruncated die Kürzung der Call-Stack-Frames und Issues indiziert die aufgezeichneten Berechnungsprobleme
TXLSUserFunctionRegistryGeneration ändert sich bei jeder Änderung der registrierten Benutzerfunktionsmenge und erlaubt so die Invalidierung zwischengespeicherter Formelbindungen
EXLSReportRecoverableDataCategory identifiziert die dem Aufrufer präsentierte Kategorie wiederherstellbarer Berichtsdaten
IXLSWorkBookManualCalculationThreadCount begrenzt die Anzahl Worker für die manuelle Berechnung
TXLSXDataValidationHasUnknownImeMode meldet einen IME-Moduswert, den HotXLS bewahrt, aber nicht erkennt
TXLSXTableColumnCalculatedFormulaArrayRaw und ColumnTotalsFormulaArrayRaw geben den ursprünglichen Arrayformeltext für Tabellenspalten frei

Kompatibilität mit altem PivotCache-Framing

TXLSPivotCacheRawBucketIndex kennzeichnet die Position des Quellsubstreams, RawFramingIsLegacy ein altes HotXLS-Framing, RawModelIsComplete sagt, ob das typisierte Modell jeden Datensatz abbildet, und CanUpgradeFraming , ob die aktivierbare typisierte Neuerzeugung sicher ist
TXLSPivotCacheStreamId legt die Classic-Cache-Stream-Identität offen, SourceDataType die Classic-Quelldatenart, und RawHasStorageStream meldet, ob ein geladener Cache aus einem unabhängigen PivotCache-Speicherstream kam
TXLSWorkbookUpgradeLegacyPivotCacheFraming aktiviert das Umschreiben nur für alte HotXLS-Cache-Framings mit vollständigem typisiertem Modell; die normale Raw-Cache-Wiedergabe bleibt Standard

StreamId wird als SXStreamID -Datensatz geschrieben ([MS-XLS] §2.4.303) und als SXDB -Feld des idstm -Headers wiederholt, wo es gleich sein muss; SourceDataType wird als SXVS -Datensatz geschrieben ([MS-XLS] §2.4.317: $0001 Arbeitsblatt, $0002 extern, $0004 Konsolidierung, $0010 Szenario) und als SXDB -Feld des vsType -Headers wiederholt, wo es gleich sein muss. Caches aus einem Arbeitsblattbereich starten mit dem Arbeitsblatt-Typ, während aus einer Datei zurückgelesene Caches den Wert behalten, den ihr Substream mitbrachte — der BIFF-Writer hinterlässt also nie ein SXDB -Feld, das einen nicht ausgegebenen Datensatz benennt; RawHasStorageStream markiert einen Cache, der aus seinem eigenen Speicherstream geladen wurde, dessen arbeitsmappenweiter Deskriptor den Cachedatensätzen vorangeht

Clipboard-Integration und Einfügeoptionen

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;
      
Die Einfügeoptionen teilen sich die PasteFromClipboard -Überladungen beider Fassaden: xlpoValuesOnly behält die zwischengespeicherten Werte von Formelzellen und überspringt Formate und verbundene Zellen, während xlpoInsertRows und xlpoInsertCols vorhandene Inhalte verschieben, bevor der Block landet
Die Hilfsfunktionen kapseln die Windows-Zwischenablage für Tabellenkalkulations-Interop: Die Text-Helfer nutzen CF_UNICODETEXT (mit Fallback auf CF_TEXT über die aktuelle ANSI-Codepage), XLSSetClipboardTextAndHtml schreibt Text und eine gestylte HTML Format -Payload in einer Transaktion, XLSBuildHtmlClipboard berechnet die CF_HTML-Byte-Offsets für ein Dokument oder Fragment, und XLSEncodeClipboardField setzt ein tabulatorgetrenntes Feld in Anführungszeichen. XLSParseClipboardGrid parst Clipboard-Text als tabulatorgetrennte Zeilen mit derselben Typ-Erkennung, die TXLSCSVLoader für CSV verwendet, XLSParseXmlSpreadsheet führt dieselbe Loader-Füllung über eine SpreadsheetML-2003-Payload durch, die mit XLSGetClipboardXmlSpreadsheet geholt wurde, und die Biff8 -Helfer erkennen und lesen den nativen Stream, den Excel selbst in die Zwischenablage stellt, sodass eingefügte Daten Werte, Formeln und Formatierung ohne Textverlust behalten
XLSReadClipboardPasteData erfasst den Biff8 -Stream und den Unicode-Text in einer einzigen Zwischenablage-Sperre, sodass ein Einfügen die Zwischenablage zwischen den beiden Lesevorgängen nie erneut öffnen muss und keines der beiden Formate an einen gleichzeitigen Inhaber verliert. XLSSetClipboardBiff8 ist die passende Schreibseite: Sie legt den BIFF8-Compound-File-Stream, tabulatorgetrennten Unicode-Text und eine optionale CF_HTML-Payload in einer Transaktion ab — übergeben Sie ein leeres Text oder Html, um eines der beiden Begleitformate zu überspringen; der Biff8 -Teil ist Pflicht

Auflösung des Zellanzeigetexts

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;
      
Ein gemeinsamer Resolver entscheidet, was eine Zelle für einen gegebenen Ansichtszustand zeigt: Formeln statt Werte, unterdrückte Nullen, verborgener Formeltext auf geschützten Blättern und der doppelte Breitenfaktor, den Excel bei der Formelanzeige anwendet. Der Arbeitsmappen-Viewer und die Renderer rufen ihn über ihre Anzeigeoptionen-Einstiegspunkte auf, und Anwendungen können XLSResolveCellDisplay direkt mit eigenen Eingabedatensätzen aufrufen; XLSDefaultCellDisplayOptions liefert die kanonischen Standardwerte, und XLSNormalizeFormulaDisplayText normalisiert eine Formelzeichenfolge für die Anzeige

Klassische Datenvalidierungsobjekte

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 }
      
Die typisierten TXLSWorksheet.Add*Validation -Hilfsfunktionen erzeugen TDVRange -Regeln in der TDVRangeListdes Blatts; jede Regel trägt ihren TXLSDataValidationType, ihre Grenzen, Eingabe- und Fehlermeldungen sowie ihren TXLSDvErrorStyle. TDataValidator prüft eine Eingabe gegen die Regeln und meldet, ob der Wert akzeptabel ist — dasselbe Kriterium, hinter dem auch Excels eigene Validierungshinweise stecken

Indizierte Farben scannen und auflösen

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);
      
Diese Datensätze stehen hinter den Arbeitsmappen-Methoden ResolveIndexedColor, NearestIndexedColorund ScanIndexedColorUsage : Eine Auflösung meldet, aus welcher der vier TXLSIndexedColorKind -Quellen ein indizierter Token stammt, samt Paletten-Slot, Systemfarben-Rolle und normalisiertem ARGB; ein nächster Treffer ergänzt die quadrierte RGB-Distanz und das Exact-Match-Flag, und der Nutzungs-Scan markiert jede Verbraucherkategorie, die einen Paletten-Slot sperrt. Die Bibliothek hält einen internen TXLSIndexedColorMatcher -Cache, keyed nach der Paletten-Generation — FindNearest beantwortet Nearest-Color-Abfragen daraus, und UpdateSlot patcht einen einzelnen Paletten-Slot —, sodass wiederholte Auflösungen ohne Allokationen bleiben

A1-Referenzhelfer

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;
      
Eigenständige Helfer für dieselbe A1-Notation, die auch die Arbeitsmappen-APIs akzeptieren: Sie formatieren nullbasierte Koordinaten als A1-Zellreferenz und parsen Zell- oder Bereichsreferenzen zurück, wobei sie bei fehlerhafter Eingabe False liefern, statt eine Ausnahme auszulösen

Siehe auch