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
TXLSAutofilter | Add, 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 |
TXLSAutofilterItem | Shape 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 |
TXLSDataBarSpec | AxisColor, 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 |
TXLSIconSetSpec | ThresholdEqualsInclude kiest per icoondrempel tussen inclusieve en exclusieve vergelijking |
TXLSCfValue | IsIndexedColor 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
TXLSDataTable | Assign, 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 |
TXLSDataTables | Add, 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 |
TXLSPivotCacheField | GroupBaseField 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
TXLSDiagnostic | Code, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetNameen StreamOffset identificeren één parser-, writer- of pakketdiagnose |
TXLSDiagnostics | Add voegt een diagnose toe, Clear zet de verzameling terug, en Count samen met Items somt de items op |
TXLSDiagnosticSeverity and TXLSDiagnosticOperation | TXLSDiagnosticSeverity (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 |
TXLSFormulaDebugSession | CurrentStep, DependencyCount, NodeCounten StepCount leggen de huidige foutopsporingsmomentopname en de omvang van de traceringen bloot |
TXLSFormulaTracer | StepCount meldt het aantal geregistreerde evaluatiestappen |
TXLSImportCheck | AddRule, 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
TlxImportColumnRule | Column, 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 |
TlxImportRuleFlags | irRequired, 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 |
TlxImportValueKind | ivkAny 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 |
TlxImportDateSerialMode | idsNone 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): TlxImportUniqueRule | Voegt 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): TlxImportCrossColumnRule | Voegt een vergelijking binnen dezelfde rij toe met read-only LeftColumn en RightColumn, een bewerkbare Comparison, Name, Titleen SkipBlankValues, dat standaard op True staat |
TlxImportComparison | icEqual, 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
TlxImportViolation | Row, 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 |
TlxImportViolationKind | ivRequired, 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
Opslagbeleid voor externe koppelingen
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);
property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
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 werkmapstructuurAbsoluteTolerance 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 cachesTXLSCalculationAuditReport.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 -probleemRunCalculationAudit 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)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 waardenTabelformules en IME-status
property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
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
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;
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;
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
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;
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]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
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
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
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
TXLSHTMLImport | LoadFromHTML -overloads importeren HTML-tabelinhoud uit een stream of bestand in een werkblad, met optionele startcoördinaten, tabelselectie en decimaalteken |
TXLSCodeGen | Language (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) |
TXLSXWorkbookCompare | Compare 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 |
TXLSFileMonitor | IntervalMs 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 TXLSCSVSaver | De 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
lcoFormulaCachedResults | Vergelijkt 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 |
lcoCellStyles | Vergelijkt 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 |
lcoAxisGeometry | Vergelijkt 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 |
lcoDefinedNames | Vergelijkt namen met werkmap- of werkbladscope, hun formuledefinities, zichtbaarheid, opmerkingen en macrovlaggen; scope volgt werkbladnamen, en invoegvolgorde creëert geen verschillen |
lcoDataValidations | Vergelijkt 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 |
lcoConditionalFormats | Vergelijkt 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 |
lcoTables | Koppelt 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 |
lcoDrawings | Vergelijkt 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 |
lcoBlankStyleRegions | Vergelijkt 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 |
lcoRichTextRuns | Vergelijkt 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 |
lcoPivotTables | Koppelt 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 |
lcoPivotCaches | Koppelt 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 |
lcoSlicerState | Koppelt 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 |
lcoTimelineState | Koppelt 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
| Lid | Contract |
|---|---|
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.AddRawString | Voegt exacte gecodeerde bytes toe zonder een AnsiString-codepaginaconversie en werkt DataLength bij; een lege invoer voegt geen bytes toe |
TXLSCalculator.CodePage, TXLSFormula.FCodePage | Kiezen 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.GetStyleBlob | Het optionele CodePage-argument staat standaard op 1252 en codeert BIFF5-tekst; BIFF8-uitvoer blijft Unicode |
TMsoDrawing.StoreNotes | Het 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.SetSourceData | De 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.GetExternalData | Het 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 compilation | ClearDefinition 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 flags | StoreIndex 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, ColsCount | Melden 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 attributes | Geï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, FmtExists | AddValue 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, IsDateFormatValue | IsDateFormat 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, AddBuiltinStyle | AddStyle 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.BuiltinStyleName | Klassefunctie 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
TXLSXOpaquePackage | LoadWorkbookXmlMetadata 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 |
TXLSFileStorage | Load, 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 |
TXLSBlob | Add 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 |
TXLSBlobList | Append, AppendList, CopyDataen Write combineren items of geven ze uit; Entries en TotalSize leggen de lijststatus bloot |
TXLSWideStringBuilder | AddString voegt tekst toe en Length meldt het opgestapelde tekenaantal |
Toevoegingen voor tekeningen en werkmapviewer
TXLSFillFormat | PictureFill configureert een op een afbeelding gebaseerde vormvulling, terwijl FillType de vulsoort kiest (effen kleur, verloop, afbeelding of vooraf ingestelde textuur) die de writer uitschrijft |
TXLSShapes | AddScrollBar 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 |
TXLSWorkbookViewer | CanUndo 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 |
TXLSWorkbookEditHistory | De 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 |
TXLSCellContentSnapshot | Beide 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, XLSRecordCachedChartScene | Preflight 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 |
TXLSGraphicsBackend | DrawTiledImage tekent een werkbladachtergrond herhaaldelijk over de afgeknipte paginaregio |
TXLSPaginationModel | CompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBordersen PaintPageBackground sturen de pagina-inhoud; RenderDPI, RenderColorModeen RenderSession leggen de uitvoerresolutie, kleurafhandeling en de actieve rendersessie bloot |
TXLSCellImageExporter | Measure berekent pixeldimensies voor klassieke of XLSX-bereiken; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPainten PaginationModel configureren en observeren de rendering |
TXLSPageImageExporter | BeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColoren TransparentBackground passen dezelfde paint-hooks en uitvoerveiligheidslimieten toe op gepagineerde beeldexport |
TXLSPrintDocument | PrintWorksheet, 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
TXLSXChartSeries | LineVisible, 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 |
TXLSChartSeries | AddTrendline 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 |
TXLSChartAxis | HasAxcExtFlag toetst één ruwe AXCEXT-vlag zonder dat aanroepers het bitmasker zelf moeten decoderen |
TXLSChartModel | AxisGroupCount meldt het aantal primaire en secundaire asgroepen dat uit de grafiek is gedecodeerd |
TXLSCustomChart | AddAreaData 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 |
TXLSWorksheet | AddChartObject verankert een grafiekkader op het werkblad en koppelt het aan de gedeelde grafiekbouwer |
TXLSXChartLayoutResolver | TryResolve 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.GetStoredRecordInfo | Geeft een record-ID en getelde bytelengte terug voor een nulgebaseerde recordindex zonder zijn payload te kopiëren |
| TXLSCustomChart.ReadStoredRecord | Kopieert één payload na validatie van de index en de niet-negatieve MaxBytes; de standaard bytelimiet is High(Int64) |
| TXLSCustomChart.ReadStoredFormulaLeafInfo | Inspecteert 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.ReadStoredFormulaLiteral | Geeft pas een losse literal terug nadat dezelfde proveniëntie- en quotacontroles zijn geslaagd; een niet-ondersteund blad geeft EInvalidOperation |
| TXLSCustomChart.SourceBiffVersion, SourceCodePage | Read-only proveniëntie van de bewaarde grafiekrecords |
| TXLSStringTable.GetStoredStringLength, ReadStoredString | Telt 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, ReadStoredName | Controleert 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.HasStoredUnicodeString | Controleert begrensde opgeslagen complexe Unicode-string-metadata zonder een string te materialiseren |
| TMsoShapeContainer.HasOrdinaryChartObjectData | Controleert 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, AddWithExtras | KeyExists 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, ReplaceIndex | Replace 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, InitExtIndex | AddSSTData 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, BiffSizeLimit | SlotCount 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
IXLSPDFAttachmentSource | WriteTo streamt de bytes van een bijlage de PDF-export in zonder dat de exporteur zelf de brongegevens hoeft te beheren |
TXLSPDFExport | AttachmentDuplicatePolicy kiest de afhandeling van dubbele namen, AttachmentSpoolThreshold stuurt het spoolen van bijlagen, en DocumentLanguage schrijft de metagegevens van de documenttaal |
TXLSPDFSignature | TextAlign, TextSize, TextColor, TextBolden TextItalic configureren het zichtbare uiterlijk van de handtekening |
TXLSHTMLExport | ViewMode (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 |
TXLSXHtmlExportOptions | ViewMode, HotTrackTargetsen HotTrackColor bieden de equivalente besturing voor XLSX-HTML-export |
Berekeningsaudit en werkmapbesturing
TXLSCalculationAuditReport | Truncated meldt afkapping wegens het probleemlimiet, StackTruncated meldt afkapping van callstack-frames, en Issues indexeert de vastgelegde berekeningsproblemen |
TXLSUserFunctionRegistry | Generation verandert zodra de geregistreerde set gebruikersfuncties verandert, zodat gecachte formulebindingen ongeldig kunnen worden verklaard |
EXLSReportRecoverableData | Category identificeert de categorie herstelbare rapportgegevens die aan de aanroeper wordt getoond |
IXLSWorkBook | ManualCalculationThreadCount begrenst het aantal workers dat handmatige berekening gebruikt |
TXLSXDataValidation | HasUnknownImeMode meldt een IME-moduswaarde die HotXLS heeft behouden maar niet herkent |
TXLSXTable | ColumnCalculatedFormulaArrayRaw en ColumnTotalsFormulaArrayRaw leggen de oorspronkelijke matrixformuletekst voor tabelkolommen bloot |
Compatibiliteit van verouderde PivotCache-framing
TXLSPivotCache | RawBucketIndex 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 |
TXLSPivotCache | StreamId 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 |
TXLSWorkbook | UpgradeLegacyPivotCacheFraming 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;
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 landtCF_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 tekstverliesXLSReadClipboardPasteData 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 verplichtBepalen 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;
XLSResolveCellDisplay rechtstreeks aanroepen met hun eigen invoerrecords; XLSDefaultCellDisplayOptions geeft de canonieke standaardwaarden terug en XLSNormalizeFormulaDisplayText normaliseert een formuletekenreeks voor weergaveKlassieke 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 }
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 zitGeï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);
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 blijvenHelpers 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;
False bij misvormde invoer in plaats van een exceptie