HotXLS-dokumentation

Ytterligare biblioteks-API-medlemmar

Denna sida kompletterar referensen för offentliga typer som stöder de primära API:erna för arbetsbok, kalkylblad, rendering, import, diagnostik och visare men som inte kräver en egen uppgiftsorienterad guide

Filtrering och villkorsstyrd formatering

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clearoch ParseAutofilterData redigerar eller importerar filterdefinitionen; SetRangeBounds(ARow1, ACol1, ARow2, ACol2) återställer ettbaserade inkluderande gränser utan att ta bort inlästa kriterier eller rullgardinsformer, och ignorerar ickepositiva eller omvända gränser samt ett kolumnantal som skiljer sig från de inlästa fälten; Defined, FirstRow, FirstCol, LastCol, LastRowoch FieldCount exponerar de aktiva gränserna och antalet filtrerade kolumner
TXLSAutofilterItemShape exponerar filterknappens form som är kopplad till objektet, och det inlästa filterkriteriet finns tillgängligt som en TXLSAutofilterDOPER -operandpost — DataType väljer operandform och grbitSgn bär tecken- och flaggbitar — för inspektion eller roundtrip-redigering
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTintoch ClearAxisThemeColor styr axeln; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositiveoch NegativeBorderColor styr stapelns utseende; IsIndexedColor, IndexedColorIndexoch ClearIndexedColor hanterar stapelns palettindexfärg
TXLSIconSetSpecThresholdEqualsInclude väljer inkluderande eller exkluderande jämförelse för varje ikontröskel
TXLSCfValueIsIndexedColor och IndexedColorIndex rapporterar en tröskelfärg som lagrats som ett äldre palettindex, ClearIndexedColor tar bort den formen igen, och tema- eller literala färger förblir tillgängliga via de befintliga åtkomstmedlemmarna

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpecoch TXLSDxfStyle accepterar AttachWriteGuardOwner, som knyter regelobjektet till dess ägande arbetsbok så att redigeringar automatiskt förvärvar ett skrivskyddslås; ägaren implementerar TXLSCondFormatWriteGuardOwner, vars enda metod AcquireWriteGuard räcker över arbetsbokens skrivskyddslås till regeln. TXLSDxfStyle lägger till FontColorIndex med FontColorIsIndexed plus paren FillFgColorIndex / FillFgColorIsIndexed och FillBgColorIndex / FillBgColorIsIndexed för regelfärger med palettindex, samt åsidosättningar av differentiellt typsnitt via FontName, FontSizeoch FontScheme (tom sträng, en storlek i punkter eller en tematypsnittsplats som major / minor) vid sidan av de befintliga medlemmarna för fet, kursiv, understrykning och färg; varje tilldelning förvärvar skrivskyddslåset och markerar regeln som dirty för ny utmatning

TXLSConnections, TXLSDataTablesoch TXLSQueryTables exponerar OnAcquireWriteGuard (typ TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuardrespektive TXLSQueryTableAcquireWriteGuard), kroken som deras redigeringsvägar använder för att hämta ägararbetsbokens IXLSWorkbookWriteGuard före mutation och för att avancera arbetsbokens generation efteråt; låset registrerar StartGeneration, och Complete markerar skrivningen som färdig så att beroende cachar kan byggas om

Bevarade dataanslutningar bär på en typad beskrivning: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) klassificerar anslutningen, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) registrerar dess autentiseringsläge, och varje anslutningsparametervärde taggas med TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). What-if-datatabeller rapporterar sin lagrade definitionstyp via TXLSDataTableKind

What-if-datatabeller och pivotgruppering

TXLSDataTableAssign, ContainsCelloch IsRoot kopierar och inspekterar en tabell; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRowoch RowInputDeleted exponerar den lagrade beräkningsdefinitionen
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShiftoch Offset underhåller samlingen; FindByCell och FindRoot hittar tabellen som innehåller en given cell eller har sin rot i den; Count, Itemsoch OnChange exponerar samlingens tillstånd
TXLSPivotCacheFieldGroupBaseField och GroupParentField exponerar relationerna mellan ett grupperat fält och dess käll- eller överordnade fält

Ikontrösklar kan renderas eller valideras programmatiskt: XLSCfIconSetCount rapporterar hur många ikoner en TXLSIconSetType definierar, och XLSBuildCfIconGeometry fyller en TXLSCfIconGeometry med primitiverna (TXLSCfIconPrimitive, av typen TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) och punkterna (TXLSCfIconPoint) som ritar en ikon, så att egna renderare matchar Excels inbyggda ikonformer

Diagnostik, formelspårning och validering

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetNameoch StreamOffset identifierar en enskild tolkar-, skrivar- eller paketdiagnos
TXLSDiagnosticsAdd lägger till en diagnos, Clear återställer samlingen, och Count tillsammans med Items räknar upp dess poster
TXLSDiagnosticSeverity and TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) klassificerar en enskild diagnos och TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) namnger fasen som producerade den; OnDiagnostic -hanterare läser båda från den levererade TXLSDiagnostic
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCountoch StepCount exponerar felsökarens aktuella ögonblicksbild och dess spårstorlekar
TXLSFormulaTracerStepCount rapporterar antalet registrerade utvärderingssteg
TXLSImportCheckAddRule, AddUniqueRuleoch AddCrossColumnRule konfigurerar kolumnpredikat, sammansatt unicitet och typade jämförelser; Check returnerar strukturerade överträdelser från lagrade kalkylbladsvärden och formelcache:er utan omberäkning eller materialisering av packade celler; HeaderRow, FirstRow, LastRow, OnVerifyCell, ViolationCountoch Violation exponerar gränser, återanrop och resultat; Annotate och KeepOnlyViolations är explicita korrigeringsarbetsboksåtgärder; se importvalideringsscheman för typer, gränser, datumsystem, tupelidentitet och felbeteende

Importvalideringsscheman

TXLSImportCheck från lxImportCheck validerar en TXLSXWorksheet mot programägda regler; den granskar lagrade skalärvärden och lagrade formelresultat, med ettbaserade kalkylbladskoordinater och ingen implicit konvertering från text till tal, text till datum eller text till booleskt

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 startar kontrollen på nästa rad och har företräde framför FirstRow; annars är standardvärdet för FirstRow 1; LastRow = 0 använder kalkylbladets senast använda rad, medan en positiv LastRow kan inkludera frånvarande celler utan att skapa dem; kolumner måste ligga inom 1–16 384 och aktiva dataradsgränser inom 1–1 048 576

Kolumnregler och explicita typer

TlxImportColumnRuleColumn, Flags, Name, Title, MinLength, MaxLength, Pattern, ValueKindoch DateSerialMode konfigurerar en kolumn; MinimumValue, MaximumValue, HasMinimum, HasMaximum, MinimumInclusiveoch MaximumInclusive konfigurerar gränser; Validate kontrollerar schemakonfigurationen och PreparePattern förbereder det reguljära uttrycket; de två Check-överlagringarna returnerar en boolesk med felmeddelande och valfritt en TlxImportViolationKind
TlxImportRuleFlagsirRequired, irTextLength, irPattern, irUniqueoch irCallback behåller sina befintliga kontroller; irValueType aktiverar ValueKind och irValueRange aktiverar de konfigurerade gränserna; en kolumn utan flaggor kontrolleras inte
TlxImportValueKindivkAny accepterar stödda ändliga skalärvärden, ivkNumber accepterar ändliga numeriska Variants, ivkInteger kräver dessutom ett heltalsvärde, ivkDate accepterar datum-Variants eller explicit aktiverade Excel-serienummer, ivkBoolean kräver en boolesk Variant och ivkText kräver en sträng-Variant
TlxImportDateSerialModeidsNone är standard och håller numeriska värden skilda från datum; idsExcel1900 och idsExcel1904 tolkar explicit numeriska värden för en kolumn som använder irValueType med ValueKind = ivkDate

AddRule(Column) ersätter och frigör eventuell tidigare regel för kolumnen; predikaten för värdetyp, område, längd och mönster hoppar över saknade värden, null och tomma strängar, medan irRequired rapporterar dem; uniciteten behåller de distinkta policyer som beskrivs nedan; icke-tomt blanksteg räknas fortfarande som ett värde; ett tal kvalificerar inte som booleskt, ett datum kvalificerar inte som ett vanligt tal, och en talaktig sträng förblir text

Tilldelning av MinimumValue eller MaximumValue aktiverar den gränsen; HasMinimum eller HasMaximum kan stänga av den igen; båda inklusivitetsomkopplarna har True som standard; gränser måste vara ändliga typade tal eller datum, och två gränser måste vara jämförbara och beskriva ett icke-tomt intervall; omvända, saknade, inkompatibla eller tomma gränser utlöser fel innan kalkylbladsvalideringen börjar

Talgränser jämför numeriska värden och datumgränser jämför datum; heltals-till-heltals-jämförelser bevarar alla Int64- och UInt64-bitar; värden av en inkompatibel kategori klarar inte områdeskontrollen; predikaten för textlängd och reguljära uttryck fortsätter granska skalärens textrepresentation, och regex-kontrollerna behåller det befintliga IsMatch-beteendet, så använd förankringar som ^...$ när hela texten måste matcha; ett ogiltigt reguljärt uttryck stänger av sin mönsterkontroll för kompatibilitet

Datumformaterade Excel-värden

En cell som importerats från Excel kan innehålla ett numeriskt serienummer även när dess talformat visar ett datum; välj ett serienummerläge explicit när det är det accepterade importschemat; läget påverkar bara valideringen och ändrar aldrig det lagrade cellvärdet

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 är deklarerad i Variants och EncodeDate i SysUtils; numeriska serienummer måste vara icke-negativa och lösas upp före den 1 januari 10 000; fraktionerade serienummer behåller sin tid på dygnet; 1900-systemet avvisar alla serienummer från 60 inklusive till 61 exklusivt eftersom det intervallet betecknar den fiktiva skottdagen; 1904-systemet mappar serienummer noll till den 1 januari 1904

Datumgränser inkluderar tid på dygnet, så ett maximum satt till midnatt den 31 december exkluderar senare tidpunkter den dagen; använd en exklusiv övre gräns vid den 1 januari följande år när hela den sista dagen måste accepteras; textuella datum som 10/08/2026 förblir text oavsett konfigurerat serienummerläge

Sammansatt unicitet och kolumnöverskridande jämförelser

AddUniqueRule(const AColumns: array of Integer): TlxImportUniqueRuleLägger till en oberoende tupelbegränsning över en ordnad, icke-tom lista med distinkta kolumner; Name identifierar regeln, Title prefixar dess meddelande, ColumnCount och nollbaserade Columns[Index] exponerar dess medlemmar, och SkipIncompleteRows har True som standard
AddCrossColumnRule(ALeftColumn, ARightColumn: Integer; AComparison: TlxImportComparison): TlxImportCrossColumnRuleLägger till en jämförelse inom raden med skrivskyddade LeftColumn och RightColumn, en redigerbar Comparison, Name, Titleoch SkipBlankValues, som har True som standard
TlxImportComparisonicEqual, icNotEqual, icLess, icLessOrEqual, icGreateroch icGreaterOrEqual väljer relationen; numeriska par och datumpar jämför sina värden, booleska par ordnar False före True, och strängpar jämför skiftlägeskänsliga UTF-16-kodenheter ordnalt

Sammansatta nycklar behåller varje medlems exakta Variant-typ och textidentitet; Integer(1), Double(1), strängen '1', en boolesk och ett datum är distinkta medlemmar; det finns ingen skiftlägesvikning, Unicode-normalisering, locale-parsning eller avgränsartvetydighet; kombinationer som ('ab', 'c') och ('a', 'bc') förblir olika; varje valideringsomgång startar ett friskt tupelindex

När SkipIncompleteRows = True utesluter ett saknat, null- eller tomsträngsmedlem den raden från tupeluniciteten; att sätta det till False inkluderar dessa medlemmar med sina ursprungliga Variant-identiteter; en dubblett rapporterar den första tupelkolumnen som sin celladress och den första matchande raden via FirstDuplicateRow

Det befintliga kolumnvisa irUnique behåller sitt textbaserade, skiftlägesokänsliga matchningsbeteende och hoppar över saknade eller null-värden; använd AddUniqueRule([Column]) när strikt typad identitet krävs för en kolumn

Kolumnöverskridande jämförelser tvingar aldrig strängar till tal, tal till booleska eller vanliga tal till datum; blanda inkompatibla kategorier misslyckas även för icNotEqual; strängjämförelser skiljer sammansatt och uppdelad Unicode, bevarar inbäddade nulltecken och använder kortare-prefix-först-ordning; när SkipBlankValues = False ger någon av de tomma operanderna en kolumnöverskridande överträdelse

Strukturerade resultat och korrigeringsarbetsböcker

TlxImportViolationRow, Col, SheetNameoch Address identifierar cellen, med Address i A1-notation; ValueText och ErrorText bär visningsinformation; RuleName och Kind identifierar den konfigurerade regeln och felkategorin; RelatedColumn identifierar den andra operanden vid ett kolumnöverskridande fel och FirstDuplicateRow identifierar originalraden vid unicitetsfel
TlxImportViolationKindivRequired, ivTextLength, ivPattern, ivUnique, ivCallback, ivValueType, ivValueRange, ivCellError, ivFormulaCacheMissing, ivCompositeUniqueoch ivCrossColumn skiljer de felkategorier som stöds

Check(Sheet) returnerar antalet överträdelser, och ViolationCount plus nollbaserad Violation(Index) räknar upp rapporten; en kolumnregel rapporterar sitt första underkända predikat, medan oberoende konfigurerade tupel- och jämförelseregler kan lägga till ytterligare överträdelser för samma cell; tilldela meningsfulla Name-värden när anropare behöver stabila regelidentifierare

Formelceller valideras med sina lagrade cachade värden; en formel utan lagrat cachat resultat rapporterar ivFormulaCacheMissing, och ett felresultat rapporterar ivCellError; räkna om explicit före kontrollen när färska formelresultat krävs; valideringen kommer inte åt externa källor, ändrar inte formeldefinitioner eller utvärderar icke-cachade formler

OnVerifyCell behåller signaturen för återanropet TlxImportVerifyCell och körs efter genomförda tillämpliga kolumnpredikat och unicitetskontroller; den returnerar en boolesk och kan sätta ett programfelmeddelande; återanrop måste hålla arbetsboken och valideringsschemat oförändrade, och skrivningar till arbetsboken avvisas av läslåset; återanropsundantag propagerar och låset släpps för efterföljande operationer

Check antecknar aldrig, tar inte bort rader och materialiserar inte packade värden; använd Annotate efter kontrollen för att tillämpa röda teckensnitt och lägga till feltext i befintliga kommentarer, eller anropa explicit KeepOnlyViolations för att ta bort icke-överträdande rader och skapa en korrigeringsarbetsbok; dessa metoder ändrar det tillhandahållna kalkylbladet, så anropa dem på den avsedda arbetsboken efter att ha granskat rapporten

Valideringen lånar kalkylbladet och arbetsboken för det synkrona anropet; den övertar inte anroparens objektägande och kräver ingen gränssnittsägd arbetsbok; ett läslås skyddar relevanta lagrade cellogonblicksbilder och åtkomst till lagrad formelcache under hela kontrollen

TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Båda motorerna sparar som standard cachade värden och använder xluPromptUser; xluNever och xluAlways ändrar endast den uppdateringsinställning som lagras i arbetsboken och auktoriserar eller initierar aldrig extern fil- eller nätverksåtkomst

Beräkningsgranskning och arbetsbokstips

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 slår ihop formelsymbolfel och avvikelser mellan cachade värden i stabila, strukturerade kategorier med kalkylbladskoordinater, formler, symboler, förväntade och faktiska värden samt avgränsad trunkering, medan cachar och arbetsbokssemantik lämnas orörda. RecalcAndVerifyEx kör den djupa granskningen: den utvärderar varje formel en gång genom beroendegrafen in i ett isolerat resultatöverlägg så att beroende celler läser detta pass i stället för inaktuella cachar, klassificerar utvärderingsfel (argument som inte stöds, cirkulära referenser, nekade eller saknade externa referenser, överhoppade datatabeller, avbrutna körningar, interna fel) med resultatkoder, registrerar en avgränsad anropsstack per fel, respekterar en gräns för antalet problem samt ett återanrop för progress/avbrott, och förblir skrivskyddad om inte ApplyResults sparar de omräknade värdena atomärt efter ett fullt framgångsrikt pass över en oförändrad arbetsboksstruktur
AbsoluteTolerance och RelativeTolerance styr avvikelsesrapporteringen, inte mellanliggande beräkningsvärden eller explicit tillämpning av cachar För numeriska resultat kräver en avvikelse att den absoluta skillnaden överstiger AbsoluteTolerance och, när relativ tolerans är aktiverad, även RelativeTolerance * max(abs(Expected), abs(Actual)) Likheter vid någon av trösklarna tolereras; ändrade värden går ändå in i granskningsöverlägget så att beroende formler ser den aktuella beräkningen, och ApplyResults sparar dessa värden även när deras skillnader inte är rapporterbara En skrivskyddad granskning ändrar aldrig lagrade cachar
Varje element i TXLSCalculationAuditReport.Issues är en TXLSCalculationAuditIssue; Kind väljer en av xlcai* -kategorierna, Expected / Actual bär de jämförda värdena vid cache-avvikelser, Stack är den avgränsade utvärderingskedjan som renderas som Sheet!A1 > Sheet!B2 (yttersta anropet först), och ExternalTarget beskriver den externa arbetsboken vid problem med externa referenser. TXLSRecalcAuditOptions.OnProgress är ett TXLSRecalcAuditProgress -mål som tar emot nodprogress i ACurrent / ATotal och kan sätta ACancel för att stoppa granskningen vid nästa nodgräns med ett enda xlcaiCancelled -problem
RunCalculationAudit är motoringången som arbetsboksnivåns granskningsomslag delegerar till, och den tar emot samma optionspost. FormulaIsVolatile rapporterar huruvida en formel skulle tvinga fram omberäkning i varje pass (anrop som NOW, RAND, TODAY, OFFSET, INDIRECTeller en referens som inte kan lösas upp)
Granskningsöverlägget är ett What-if-lager ovanpå cellcacherna: AuditOverlayWrite lagrar ett ersättningsvärde för en cell (ettbaserat bladindex, nollbaserad rad och kolumn enligt kalkylatorkonventionen), AuditOverlayRead och AuditOverlayHash frågar mot det, och AuditOverlayClear tömmer lagret. Överlagrade värden returneras av de normala cellvärdesgetrarna, så omberäkning och djupgranskning ser dem utan att kalkylbladsceller muteras; rensas överlägget återställs de lagrade värdena
Arbetsbokens tipsegenskaper bevarar tillstånden saknas, false, true, disabled, automatic och manual där källformatet stöder dem; de startar aldrig beräknings-, uppdaterings-, filsystems-, nätverks- eller databasjobb vid öppning

Tabellformler och IME-tillstånd

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Formler för beräknade kolumner och totalsrader bevarar oberoende matristillstånd — saknas, false, true eller okänt — inklusive orörda lexikala källvärden och strukturella kolumnredigeringar; matrisformler avvisas av den skalära radexpansionen i stället för att tyst ändras
IME-lägena använder explicita BIFF- och OOXML-mappningar, bevarar okända källvärden och avvisar det OOXML-exklusiva värdet disabled när det skapats för Classic XLS
Att sätta SaveExternalLinkValues till False utelämnar de klassiska XCT - och CRN -posterna eller XLSX-underträdet sheetDataSet för extern arbetsbok, samtidigt som länkmål, bladnamn, externa definierade namn, relationer, formelreferenser, okänd XML och cacheminnet bevaras; att återställa egenskapen till True i samma arbetsbok kan serialisera den bevarade cachen igen
Orörda token från källor som inte stöds bevaras byte för byte eller lexikalt, explicita tilldelningar emitterar endast giltiga värden, oförändrade XLSX-delar behåller den komprimerade kopieringsvägen, och XLS/XLSX-konvertering överför båda policyerna; ODS- och textarbetsböcker har ingen motsvarande deklaration och öppnas med standardvärdena, medan bevarade DDE- och OLE-länkdelar inte behandlas som cellcachar för externa arbetsböcker

Inspektion och borttagning av Web Add-in-uppgiftsrutor

function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
      
Inspektionsmetoderna känner endast igen interna relationer från paketroten vars typ exakt matchar Web Add-in-uppgiftsrutans relationstyp; externa relationer, typer med annan versalhantering, kalkylbladsrelationer och delar med liknande namn ignoreras
Borttagningen validerar först hela relationsgrafen, inklusive normaliserade mål, begränsning till paketroten, cykler, saknade delar och resursgränser; den tar sedan bort alla matchande rotrelationer och endast de nåbara delar som inte delas av någon annan kvarhållen relation, tillsammans med relationsdelar som ägs av borttagna källor
Åtgärden är atomisk och idempotent, borttagna källdelar kan inte återkomma via sparande med komprimerad kopia, och innehållstyperna byggs om från det återstående paketet; felformade grafer lägger till diagnostikkoden 1303 och utlöser ett undantag före mutation, medan Classic XLS och ODS returnerar False, 0och -1 utan paketskanning

Visningspolicy för arbetsboksobjekt

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 mappar de tre tillstånden till sin post för objektvisning i arbetsboken och XLSX mappar dem till workbookPr.showObjects; saknade värden ger xlsodmShowAll, orörda reserverade Classic-nyttolaster och XLSX-token som inte stöds bevaras förlustfritt, och explicita tilldelningar skriver bara kanoniska värden
Visaren renderar platshållarläge som lätta rutor med tillgänglig objekttyp, namn, text och alternativ text; exportörer behåller fulla objekt som standard, medan ExportObjectPlaceholders begär samma billiga policy utan att avkoda bildnyttolaster eller bygga diagramscener
xlsodmHideAll förhindrar ritningssamling och objektdriven områdesexpansion innan renderingen börjar; arbetsbokskonvertering bär med sig alla tre tillstånden, ODS skriver kompletta ritningar i platshållarläge och utelämnar ritnings- och medieutdata i hide-all-läget, och kalkylbladsbakgrunder förblir oberoende

Renderingskalibreringsvärden och ögonblicksbilder

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;
      
Standardvärdena är 1, 1, 1, 1, 100och 96; bredd- och höjdkorrigeringar måste vara större än noll och mindre än två, radavstånd är begränsat till (0, 4], cellmarginaler till [0, 4], skärmskalning till [100, 500] procent och mät-DPI till [36, 2400]
Classic XLS- och XLSX-arbetsböcker exponerar samma medlemmar RenderCalibration, CaptureRenderCalibrationoch ResetRenderCalibration ; tilldelning av hela posten validerar före mutation, och varje insamling returnerar en oberoende, enligt konvention oföränderlig värdeögonblicksbild för en renderingsoperation

Renderingsgeometri och teckenmätning

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 äger en oföränderlig kalibrering, arbetsboksgeneration, backend-identitet, en mättjänst och ett avgränsat operationslokalt måttcache; CreateXLSRenderGeometry använder GDI, medan CreateXLSPortableCairoRenderGeometry i lxPortableCairo använder explicita typsnittsbyte med FreeType/HarfBuzz på inbyggd Linux eller macOS; MeasureText returnerar pixelbredd, höjd, radhöjd, ascendering, descendering och radantal, medan MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPointsoch UsableCellWidthPixels tillhandahåller de gemensamma geometrikonverteringarna
Cacheidentiteten omfattar backend, arbetsboksgeneration, alla kalibreringsvärden, typsnittsnamn, exakt storlek, format, teckenuppsättning, radbrytningsbredd och text; bredd- och höjdkorrigering tillämpas en gång vid textmätning, radavstånd påverkar endast höjden för flera rader, cellmarginalkorrigering påverkar endast användbar textbredd, och skärmskalning påverkar endast emulering av maximal sifferbredd för implicita kolumnbredder
Classic XLS- och XLSX-AutoFit samlar in en tjänst för varje offentlig operation, inklusive sammanslagna områden och tvåfasig MarkSheet -mätning, medan TXLSPaginationModel.Build samlar in en tjänst för den valda RenderBackend; PDF-, SVG-, bitmapps-, förhandsgransknings-, arbetsboksvisar- och HTML-ingångspunkter väljer sin egen backend före utdata, en ändring av arbetsbokens kalibrering kan inte mutera en befintlig ögonblicksbild, och utdata skriver inte kalkylbladsdimensioner
Direkta HTML-anrop för arbetsbok, kalkylblad och område samlar in en färsk xlsrgbHtml -tjänst, medan en inkrementell TXLSXHtmlExportSession samlar in en gång i BeginExport och återanvänder den ögonblicksbilden för alla blad; båda exportörerna exponerar den kvarhållna tjänsten via RenderGeometry för kalibrerings- och cachediagnostik
De skrivskyddade IXLSRenderGeometry -egenskaperna WorkbookGeneration, CacheCapacityoch CacheEntryCount rapporterar den bundna generationen och cachefyllnaden för diagnostik, och ImplicitWidthMaximumDigitWidthPixels returnerar sifferbreddsmätningen bakom emuleringen av implicit kolumnbredd
MeasureText fyller en TXLSRenderTextMetrics -post (pixelbredd, höjd, radhöjd, ascendering, descendering och radantal) från en TXLSRenderFont vars medlem Styles är en mängd TXLSRenderFontStyle -flaggor (fet, kursiv, understruken, genomstruken)

Import, kodgenerering, jämförelse och övervakning

TXLSHTMLImportLoadFromHTML -överlagringarna importerar HTML-tabellinnehåll från en ström eller fil till ett kalkylblad, med valfria startkoordinater, tabellval och decimaltecken
TXLSCodeGenLanguage (typ TlxCodeGenLanguage: lcgDelphi eller lcgCppBuilder) väljer källdialekten för de genererade satserna, GenerateToList skriver genererad arbetsbokskod till en stränglista, och TlxCodeGenOptions breddar utdata med sammanslagningar, kolumnbredder eller talformat (cgoMerges, cgoColumnWidths, cgoNumberFormats; blad och celler skrivs alltid ut)
TXLSXWorkbookCompareCompare jämför typade lagrade celler, formeltext, bladnärvaro och sammanslagningar; Options lägger till formelcache:er, bascellstilar och rad- eller kolumngeometri, SetNumericTolerance konfigurerar numerisk likhet, och Count, Diffoch Report exponerar de ordnade resultaten; se arbetsboksjämförelse
TXLSFileMonitorIntervalMs väljer pollingintervallet och SynchronizeEvent väljer synkroniserad återanropsleverans; en OnFileChanged -hanterare kan inaktivera eller förstöra övervakaren, eller ändra FileName för att börja bevaka en annan fil
TXLSCSVLoader and TXLSCSVSaverLaddaren tolkar avgränsad text till ett minnesinternt rutnät av Variants — ParseFile och ParseStream fyller rutnätet, CellValue, RowCountoch ColCount läser tillbaka det — med automatiskt detekterad avgränsare (ValueSeparator) och kodning (TXLSCsvEncoding: system-ANSI, UTF-16, UTF-8) samt valfri typhöjning styrd av DetectTypes och per kolumn i ColumnTypes (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbersoch FieldWidths förfinar fast bredd- och locale-hanteringen. TXLSCSVSaver.SaveAs skriver tillbaka rutnätet med RFC 4180-citering, och QuoteAllStrings tvingar fram citering; TXLSTSVSaver härleds från spararen för tabbseparerad utdata

Arbetsboksjämförelse

TXLSXWorkbookCompare i lxCompare jämför två TXLSXWorkbook -instanser utan att räkna om formler eller ändra någon av arbetsböckerna; blad paras ihop efter skiftlägesokänsligt namn, och att enbart ändra bladordningen ger ingen skillnad

Standardvärdet för Options är tomt och båda toleranserna är noll som standard; standardjämförelsen rapporterar tillagda eller borttagna blad, tillagda eller borttagna lagrade celler, ändrade typade literala värden, ändrad formeltext samt tillagda eller borttagna sammanslagna områden

Literaljämförelsen skiljer tal, text, booleska värden, datum, fel och tomma celler: talet 1 skiljer sig från texten '1', en boolesk skiljer sig från sin textsättning, datum behåller sin egen typ, och fel jämförs via sin lagrade felkod; numeriska lagringstyper med lika värden jämförs lika, medan distinkta Int64-värden förblir distinkta vid exakt jämförelse

lcoFormulaCachedResultsFör celler med matchande formeltext jämförs det befintliga cachade resultatet, och en saknad eller ogiltigförklarad cache skiljs från en tillgänglig cache; inlästa och beräknade cache:er med samma typade värde jämförs lika
lcoCellStylesJämför upplösta basstilar vid matchande lagrade cellkoordinater, inklusive teckensnitt, fyllningar, toningar, kantlinjer, justering, talformat och cellskydd; orelaterad stilpoolens insättningsordning skapar inga skillnader, och temafärger löses mot varje arbetsboks aktuella tema
lcoAxisGeometryJämför effektiva radhöjder, kolumnbredder, dolda flaggor, disposisionsnivåer, komprimerade flaggor och kalkylbladsstandardvärden; en explicit storlek lika med den effektiva standarden jämförs lika med en implicit storlek
lcoDefinedNamesJämför namn med arbetsboks- och kalkylbladsomfång, deras formeldefinitioner, synlighet, kommentarer och makroflaggor; omfånget följer kalkylbladsnamnen, och insättningsordning skapar inga skillnader
lcoDataValidationsJämför valideringsdefinitioner i lagrad ordning, inklusive normaliserade målområden, formler, operatorer, prompter, felmeddelanden och kontrollflaggor; att ändra ordningen på målområden inom en definition skapar ingen skillnad
lcoConditionalFormatsJämför definitioner för villkorsstyrd formatering i lagrad ordning, inklusive effektiv prioritet, stop-if-true-beteende, målområden, formler, differentiella stilar och stödda inställningar för färgskala, datastapel och ikonuppsättning; stilpool- och palettindex-identifierare löses till sina semantiska värden
lcoTablesParar tabeller efter namn och jämför områden, rubriker, summor, stilinställningar, kommentarer, kolumnnamn, etiketter, formler, matrisflaggor, unika namn, anslutningsnamn, filterkriterier och sorteringsvillkor; tabell-ID, kolumn-ID och insättningsordning skapar inga skillnader, medan färgetikett- och differentiell-stil-ID för sortering löses till utseende
lcoDrawingsJämför typade ritningsdefinitioner i ritordning, med gruppunderordningsordning och diagramplottgruppsordning bevarade; stödda kanoniska definitioner täcker bilder, textrutor, diagram, grupper, kompletta typade slicervyer och typade tidslinjevyer, medan opaka eller ostödda ritningsnoder utlöser EXLSSemanticSnapshot
lcoBlankStyleRegionsJämför upplösta basstilar över koordinater utan lagrad cell på någon av sidorna, inklusive kalkylbladsstandarder och virtuella stilöverlägg; likvärdiga rektangelunderdelningar jämförs lika, och lika intilliggande ändringar slås samman till rektanglar utan att materialisera celler
lcoRichTextRunsJämför effektiva runtypsnitt och text vid matchande lagrade textceller, ärver basfontet för utelämnade runegenskaper, ignorerar tomma runs och slår samman intilliggande runs med lika effektiva typsnitt; vanlig text matchar en ekvivalent rik-text-run med standardtypsnitt
lcoPivotTablesParar typade pivottabelldefinitioner efter namn och jämför källbindningar, layout, fält, ordnade vy-medlemmar, dataaggregat, filter, grupperingsreferenser, beräknade definitioner, stilar och flaggor för inbyggd materialisering; cache- och delad-medlem-ID löses till källidentiteter och typade värden
lcoPivotCachesParar lokala typade pivotcachadefinitioner efter källidentitet och jämför uppdateringsmetadata, fältmetadata, grupperade etiketter och områden, oordnade delade-medlem-domäner och ordnade typade postvärden; numeriska, text-, booleska, datum-, fel- och tomma medlemmar förblir distinkta, datum behåller binär64-precision, och cache-ID och delad-medlem-slotsordning skapar inga skillnader
lcoSlicerStateParar namngivna slicervyer och cache:er, inklusive tabellkolumn- eller icke-OLAP-pivotbindningar, anslutna pivottabellnamn, typade medlemsselektioner, korsfilter- och sorteringsinställningar, bildtext, rullningsposition, kolumnlayout, dimensioner, stil, lås- och bildtextflaggor samt ankargeometri; bindningar löser tabell-, kolumn-, blad- och cache-ID
lcoTimelineStateParar namngivna typade tidslinjevyer och lokala icke-OLAP-cache:er, inklusive källfält- och anslutna pivottabellbindningar, aktiv datumselektion, bildtext, nivå och kalkylbladsgränser; inaktiva selektioner utelämnar oanvända datumslutpunkter

Options har typen TlxCompareOptions, en mängd av TlxCompareOption; att aktivera ett alternativ lägger till dess skillnader i standardjämförelsen

SetFeatureLimits(MaxBytes, MaxItems) validerar båda positiva gränserna innan någon inställning ändras; MaxFeatureBytes är 64 MiB som standard och MaxFeatureItems 1 000 000, och de individuella sättarna behåller samma atomära validering

Funktionsbudgetar täcker aggregerade fristående kanoniska byte och räknade poster från båda arbetsböckerna, inklusive rik-text-runs, filter-XML-noder, pivotfält, domänmedlemmar och postvärden samt slicer- eller tidslinjeanslutningar; läsarna kontrollerar antal och stora textindata innan inbyggd XML byggs, tvingar fram avgränsade utdataströmmar och utlöser EXLSXSemanticBudget när en gräns överskrids

SetNumericTolerance(AbsoluteTolerance, RelativeTolerance) validerar båda argumenten innan någon inställning ändras; båda måste vara ändliga och icke-negativa, och de individuella sättarna för AbsoluteTolerance och RelativeTolerance använder samma validering

Numeriska literala värden och numeriska cachevärden jämförs lika när deras absoluta skillnad är högst AbsoluteTolerance eller när deras skillnad i förhållande till det större absoluta värdet är högst RelativeTolerance; en tröskel på noll behåller exakt likhet, den relativa beräkningen undviker överlopp för extrema motsatta värden, och toleransen tvingar inte text och tillämpas inte på datum, stilar eller geometri

LeftName och RightName sätter valfria visningsnamn som används av Report -rader, med left och right som standard; namnen påverkar bara rapporteringen, inte bladparning eller jämförelse

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 returnerar skillnadsantalet, Count läser det antalet efteråt, och Diff(Index) använder nollbaserad indexering för att returnera en jämförelseägd TlxCompareDiff; behåll jämförelseobjektet medan du läser dess poster, och hämta posterna på nytt efter en ny lyckad jämförelse

Varje post tillhandahåller Kind, Sheet, ettbaserade Row och Col där tillämpligt, Ref, LeftText, RightText samt typade LeftKind / RightKind -värden; TlxCompareValueKind innehåller lcvNone, lcvBlank, lcvNumber, lcvText, lcvBoolean, lcvDateTime, lcvErroroch lcvFormula, där lcvNone används för en frånvarande sida eller en icke-värde-skillnad

TlxCompareKind behåller lckSheetAdded, lckSheetRemoved, lckCellAdded, lckCellRemoved, lckValueChanged, lckFormulaChanged, lckMergeAddedoch lckMergeRemoved, och lägger till lckFormulaCacheChanged, lckStyleChanged, lckRowGeometryChangedoch lckColumnGeometryChanged

Stilskillnader bär stabila kanoniska stilfingeravtryck i LeftText och RightText; geometriskillnader bär den jämförda storleken samt dold-, dispositions- och komprimerat tillstånd, med Ref som identifierar det berörda sammanhängande axelintervallet, Row satt till dess första rad och Col till noll för rader, eller Col satt till dess första kolumn och Row till noll för kolumner

Funktionsskillnader använder lckDefinedNameChanged, lckDataValidationChanged, lckConditionalFormatChanged, lckTableChanged, lckDrawingChanged, lckPivotTableChanged, lckPivotCacheChanged, lckSlicerChangedeller lckTimelineChanged; Change är lccChanged, lccAdded eller lccRemoved, och varje närvarande sida bär sitt kanoniska definitionsfingeravtryck medan en frånvarande sida bär en tom sträng

lckRichTextChanged identifierar en ändrad runddefinition vid sin cellkoordinat och bär kanoniska runfingeravtryck i LeftText och RightText; numerisk tolerans gäller cellliteraler och formelcache:er, medan typade funktionsdefinitioner jämförs exakt

Funktionsreferenser identifierar omfångsberoende namn eller tabellnamn, eller använder ettbaserade sekvenspositioner för validerings-, villkorsformat- och ritningsdefinitioner; att infoga eller flytta en ordnad funktion kan ändra flera positioner, medan arbetsboksnivå-namnposter har ett tomt Sheet

lckBlankStyleRegionChanged identifierar en ändrad tom rektangel via Row, Col, inkluderande LastRow och LastCol samt dess A1-Ref; lagrade koordinater hanteras av den vanliga celljämförelsen och lcoCellStyles, så aktivera båda stilalternativen för att granska lagrade celler och tomma områden tillsammans

Describe formaterar en post, medan Report(List) lägger till de formaterade posterna i en anroparägd TStrings; en typad värdeändring inkluderar typetiketter när typerna skiljer sig, och resultaten sorteras efter bladnamn, rad, kolumn, skillnadstyp och referens snarare än cellinsättningsordning

Jämförelsen håller läslån, går igenom lagrade celler via fristående cursor-ögonblicksbilder och behåller packad lagring; geometrin partitionerar lagrade metadatagränser och kompakta spann av upprepade rader, medan jämförelse av tomma stilar sveper över aktiva rektangel- och lagrade-cell-gränser utan att skanna ett rektangulärt miljonradsrutnät; arbetet växer med lagrade funktioner, regionsnitt och rapporterade skillnader

En misslyckad jämförelse bevarar det tidigare lyckade resultatet; ogiltig toleranstilldelning bevarar också de befintliga inställningarna och resultatet, medan en nil-arbetsbok rensar resultatet och returnerar noll

Denna jämförelse täcker XLSX-fasadens lagrade cellinnehåll och utvalda typade funktionsdefinitioner; namn-, validerings-, villkorsformat-, tabell- och diagramformelsättning normaliseras genom den semantiska formelparsaren, medan pivotberäknade formler behåller sin lagrade definitionstext

Tabellfilter accepterar stödda former för anpassade, värdelista-, datumgrupp-, färg-, ikon-, dynamiska och top-antal-filter samt sorteringsvillkor; oberoende filterkolumner och värdeuppsättningsposter normaliserar sin ordning, booleska standardvärden och numeriska textsättningar normaliseras, och sorteringsvillkorens ordning förblir betydelsefull

Typad pivot-, slicer- och tidslinjejämförelse löser stödda lokala kalkylbladskällor och icke-OLAP-bindningar utan att uppdatera eller utvärdera tillgänglighet; inbyggda slicer-tillgänglighetstips är härledda visningsmetadata, medan medlemsselektioner och igenkänd inbyggd sorteringsmetadata jämförs

Opaka inbyggda ritningsegenskaper, ofullständiga binära pivotmodeller, externa eller OLAP-pivotkällor, råa pivottabell-supplementposter och tilläggs-XML, okänd filter-XML samt omodellerade slicer- eller tidslinje-tilläggsattribut eller underordnade utlöser EXLSSemanticSnapshot; bevarande av sådan data innebär inte semantisk likvärdighet

Utvalda importerade pivottabell- och pivotcachefunktioner validerar också bevarad inbyggd XML innan den typade projektionen jämförs, inklusive nästlad fältmetadata och cacheposter; okända namnrymder, attribut, underordnade och tilläggsnyttolaster misslyckas explicit inom samma samverkande funktionsgränser, medan modellerade slicercache-bindningar förblir stödda

TSimpleDomNode.RawName exponerar elementets ursprungliga QName bredvid den läsarnormaliserade Name, vilket tillåter namnrymdskänslig granskning utan att ändra befintlig parsarnamnsmatchning

Arbetsboksinställningar och opak paketmetadata ligger utanför jämförelsen; basstiljämförelsen utvärderar inte utseendet på villkorsstyrd formatering eller tabellstilar, och ritningsjämförelsen bevarar den semantiska ögonblicksbildens gränser för stödda bilder, textrutor, diagram och ordnade grupper

Effektiva egenskaper för rik text

TMsoFbtOpt.StoredPids returnerar lagrade OfficeArt-egenskapsidentifierare i sorterad ordning, medan TMsoFbtSp.PersistentFlags exponerar inbyggda shape-flaggor utan att allokera egenskaper eller ankare

TMsoShapeContainer.HasPreservedObjectData identifierar kvarhållna OBJ-svansbyte; HasOrdinaryEmbeddedPictureObjectData kontrollerar att bildsvansar bara innehåller igenkända urklippsformat- och nollbildsflaggposter, och avvisar länkade eller okända poster utan att kopiera nyttolasten

TMSOShapeTextBox.HasValidTextRuns kontrollerar lagrade TXO-rungränser och reserverade fält utan att skapa runs; TMsoDrawing.HasUnmodeledAppearance identifierar inbyggd ritningsdata som den typade parsaren hoppar över, så att fångst explicit kan avvisa ouppklarad utseendedata

TXLSXRichTextRun.BoldSet, ItalicSet, StrikethroughSet, UnderlineSet, VertAlignSet och ColorSet skiljer ärvda fontegenskaper från explicita åsidosättningar, inklusive falska flaggor, none, baslinje- och automatiska färger; sättarna markerar egenskapen som explicit även när dess värde motsvarar den nya runens initiala standard

TXLSXRichText.HasUnsupportedAppearance rapporterar inbyggda rika egenskaper som den typade runmodellen inte kan representera; portabel fångst och effektiv rik-text-jämförelse avvisar sådana runs explicit, medan stödda delade/inline-runegenskaper och blanksteg behåller sin importerade semantik

Effektiv rik-text-jämförelse tillämpar explicita falska åsidosättningar innan intilliggande lika runs slås samman; ärvda och explicit rensade egenskaper förblir distinkta under deduplicering av delade strängar och stödda XML-roundtrips

TXMLReader.ResolveNamespaceUri(Prefix, Uri) löser den aktuella namnrymdsbindningen i omfånget utan att ändra läsarens position, och returnerar false när ingen bindning finns; ett tomt prefix begär standardnamnrymden, och råa QNames förblir tillgängliga för namnrymdskänslig granskning

De oföränderliga rich-/scenposterna, fångstkällans utökning och HXRSNP02 -överföringskontraktet beskrivs i Portabel headless-utmatning

Fristående stil- och axelinspektion

TXLSXWorksheet.ReadSemanticCellStyle(Row, Col) returnerar en fristående TXLSSemanticCellStyle för giltiga ettbaserade koordinater, och löser lagrade och packade stilar, kalkylbladsstandarder, tillämpliga stilöverlägg, implicita datumformat, indexerade färger och temafärger utan att materialisera celler eller ändra stilpooler; det publika anropet förvärvar ett läslås och utesluter regler för villkorsstyrd formatering och tabellstilar

TXLSXWorksheet.GetStoredAxisSpans(IsRow) returnerar TXLSXAxisSpans, en matris av TXLSXAxisSpan -poster med inkluderande ettbaserade FirstIndex och LastIndex; den rapporterar metadataavtryck för storlek, dold, dispositions- och komprimerat tillstånd, bevarar kompakta spann för upprepade radhöjder och lämnar kalkylbladets effektiva standard tillgänglig via sina vanliga egenskaper

De returnerade spannen beskriver lagrade metadataavtryck snarare än en disjunkt normaliserad partition; applikationer som jämför två axlar kan kombinera deras första- och sista-gränser och därefter granska det effektiva tillståndet en gång per resulterande intervall

TXLSXWorksheet.GetStoredStyleRegions returnerar fristående TXLSXStyleRegions som innehåller inkluderande FirstRow, FirstCol, LastRowoch LastCol -gränser för kompakta virtuella formateringsavtryck; dessa avtryck kan överlappa, och anropare läser sitt effektiva utseende med ReadSemanticCellStyle

TXLSXWorkbook.ReadSemanticFeatures(Kind, Sheet, MaxBytes, MaxItems) returnerar fristående TXLSXSemanticFeatures -poster med en stabil Key, kanoniska Definition -byte och räknat ItemCount; valfria positiva gränser har 64 MiB och 1 000 000 poster som standard

TXLSXSemanticFeatureKind innehåller xlsxSemanticDefinedNames, xlsxSemanticDataValidations, xlsxSemanticConditionalFormats, xlsxSemanticTables, xlsxSemanticDrawings, xlsxSemanticPivotTables, xlsxSemanticPivotCaches, xlsxSemanticSlicers, xlsxSemanticSlicerCaches, xlsxSemanticTimelinesoch xlsxSemanticTimelineCaches

Definierade namn och de tre cache-varianterna använder arbetsboksvid omfång och tillåter ett nil-blad; de andra varianterna kräver ett kalkylblad som tillhör arbetsboken, regler och ritningar behåller sin lagrade sekvens, och returnerade matriser och buffertar är anroparägda kopior; dessa läsare förvärvar läslån och ärver den typade täckningen och det explicita beteendet för ostödd data som beskrivs ovan

TXLSXWorksheet.ReadSemanticRichText(Row, Col, IncludePlainText, MaxBytes, MaxItems, ConsumedItems) returnerar fristående kanoniska runbyte för ettbaserade koordinater, eller en tom buffert när ingen rik text finns och IncludePlainText är false; valfri ConsumedItems: PInteger tar emot antalet fångade runs, och fångst av vanlig text behåller packad lagring

TXLSPivotCacheField.GroupItemTypes[Index] exponerar den typade sorten som motsvarar GroupItemLabels[Index] och avvisar ett index utanför den lagrade domänen av grupperade etiketter

Formelmetadata och återanrop för pivotfrågor

TXLSGetCellFormulaText och TXLSCalculator.OnGetCellFormulaText läser lagrad uttryckstext med ettbaserat SheetIndex och nollbaserad rad/kolumn, returnerar lxOk eller en typad felkod och respekterar formeldolt-skydd; TXLSGetPivotTable och OnGetPivotTable lokaliserar en lånad tabell med ettbaserat SheetIndex och nollbaserade områdeskoordinater

Arbetsboksmotorerna kopplar dessa valfria återanrop i normala, skrivskyddade och isolerade beräkningskontexter; återanropen räknar inte om mål, uppdaterar inte pivotkällor eller överför ägarskap

TXLSPivotDataConstraint lagrar en FieldName och typat Item, med TXLSPivotDataConstraints som samlar fält-/objektpar; TXLSPivotTable.GetDataValue frågar ett synligt stödt aggregat från en fristående lokal tabell-/cache-ögonblicksbild, och IntersectsQueryRange använder ettbaserade kalkylbladsgränser inklusive modellerade rapportfilterceller

TlxPivotQueryBudget tar emot arbets- och minnesuppskattningar synkront och returnerar huruvida utvärderingen kan fortsätta; EXLSPivotQueryBudget och EXLSPivotQueryUnsupported skiljer uttömda gränser från cache- eller aggregatmodeller som inte stöds

TXLSPivotCache.QueryModelIsComplete registrerar uppklarad frågeberedskap oberoende av BIFF-råreplay-kompletthet; QueryRecordsValid exponerar importerad postvaliditet, och SetQueryRecordValidity tillämpar formatläsares prioritet utan att uppdatera poster

Explicita kodsid-byte

MedlemKontrakt
XlsEncodeCodePage(Text, CodePage, MaxBytes = -1)Returnerar RawByteString med exakta byte i en explicit, icke-noll byteorienterad kodsid, bevarar inbäddade nuller, verifierar Unicode-roundtrip-identitet och utlöser EConvertError för text som inte kan representeras; ett icke-negativt MaxBytes behåller det längsta fullständiga teckenprefix som ryms, medan -1 lämnar längden obegränsad; valideringen täcker originaltexten före trunkering
XlsDecodeCodePage(Bytes, CodePage)Returnerar WideString från den explicita bytekodningen och bevarar inbäddade nuller; felformade bytesekvenser följer den installerade avkodarens beteende; kodsid 0 och UTF-16-kodsid 1200 avvisas eftersom detta API inte slutsluter en ANSI-locale eller hanterar en UTF-16-byteström
TXLSBlob.GetCompressedUnicodeString(Index, Count)Returnerar exakta BIFF8-komprimerade Unicode-kodenheter U+0000 till U+00FF, bevarar inbäddade nuller, validerar det begärda byteintervallet och tolkar inte dessa byte med en kodsid
TXLSBlob.AddRawStringLägger till exakta kodade byte utan en AnsiString-kodsidkonvertering och uppdaterar DataLength; tom indata lägger till inga byte
TXLSCalculator.CodePage, TXLSFormula.FCodePageVäljer den explicita äldre formelbytekodningen, med CP1252 som standard; den ägande Classic-arbetsboken synkroniserar sin kalkylator när den initieras eller när SetCodePage anropas
TXLSFontList.GetFont, TXLSNumFormatList.GetNumFormatBlob, TXLSStyles.GetStyleBlobDet valfria argumentet CodePage har 1252 som standard och kodar BIFF5-text; BIFF8-utdata förblir Unicode
TMsoDrawing.StoreNotesDet valfria argumentet CodePage har 1252 som standard och kodar pre-Unicode-kommentartext; den befintliga poststorleksgränsen för BIFF5-ordinära kommentarer kvarstår; detta lägger inte till fält för författare, rik text eller geometri som saknas i det postformatet
TXLSCustomName.SetSourceDataDe valfria argumenten FileFormat och CodePage identifierar importerade råa NAME-byte och har xlExcel97 och 1252 som standard; råa poster återanvänds bara när deras format och äldre kodning matchar den begärda utmatningen
TXLSFormulatArrayItem.GetDataSize, TXLSFormulatArray.GetDataSize, TXLSFormulatArray.GetData, TXLSFormulatArrays.GetDataSize, TXLSFormulatArrays.GetData, TXLSCompiledFormula.GetExternalDataDet valfria argumentet ACodePage har 1252 som standard; äldre strängmatrisstorlek och utdata använder samma kodade byteantal, medan BIFF8-strängar förblir Unicode

Skicka den returnerade RawByteString direkt till AddRawString eller en byteorienterad strömoperation; att konvertera den till en standard-AnsiString kan koda om dess byte på inbyggda FPC-system

Klassiska definierade namn och matrisformelblock

TXLSCustomName deferred compilationClearDefinition frigör det kompilerade RefersTo-AST samtidigt som den lagrade definitionssträngen och eventuella råa importerade NAME-byte behålls, Compile bygger om AST från den lagrade definitionen och rapporterar framgång, och GetCompiledFormula kompilerar om automatiskt, så ett rensat namn löses upp igen vid nästa läsning; PeekCompiledFormula returnerar aktuellt AST utan att utlösa den omkompileringen, och StoredDefinition exponerar den oparsade definitionskällan
TXLSCustomName identity and flagsStoreIndex exponerar namnets lagringsposition inom sin samling, NameID dess arbetsboksunika numeriska identitet som beräkningsmotorn använder, och IsHiddenoch IsMacro läser och skriver BIFF NAME-postens flaggor för dold och makro
TXLSFormulatArray.RowsCount, ColsCountRapporterar rad- och kolumnutsträckningen för det parsade matrisformelblocket; båda börjar på ett och avgränsar per-cell-objektdomänen som utmatningsmetoderna bär

Klassiska font-, format- och stilpooler

TXLSFontList stored font attributesIndexerade egenskaper speglar den lagrade fontnyckeln vid ett nollbaserat listindex: Name, Size, ColorIndex, Bold, Italic, Strikethroughoch Underline ansluter till OutLineFont, Shadow, SubScript, SuperScript, Familyoch CharSet för skrivskyddad inspektion
TXLSNumFormatList.AddValue, FmtExistsAddValue registrerar en formatsträng och returnerar dess index, mappar inbyggda formatsättningar till sina kanoniska id och flaggar datum- och tidsformat; FmtExists rapporterar huruvida en anpassad formatsträng redan är registrerad
TXLSNumFormatList.IsDateFormat, IsDateFormatValueIsDateFormat rapporterar huruvida formatet som lagrats vid ett index är flaggat som datum- eller tidsformat, medan IsDateFormatValue testar en formatsträng direkt för datum- och tidstoken
TXLSStyles.AddStyle, AddBuiltinStyleAddStyle registrerar en namngiven anpassad cellstil bunden till ett XF-postindex, och AddBuiltinStyle registrerar en inbyggd cellstil efter dess inbyggda id tillsammans med den disposisionsnivå som rad- och kolumnnivåstilar använder
TXLSStyles.BuiltinStyleNameKlassfunktion som returnerar det kanoniska visningsnamnet för Excels inbyggda cellstilar för inbyggda id 0 till 53; id utanför intervallet returnerar ett tomt namn så att skrivare faller tillbaka på den råa builtin-byte-formen

Hjälpmedel för paket- och binärlagring

TXLSXOpaquePackageLoadWorkbookXmlMetadata samlar in XML-tillstånd på arbetsboksnivå, MarkAllPartsClean återställer smutsiga flaggor, och WorkbookExtLstXml tillsammans med WorkbookRootAttributesXml exponerar bevarade arbetsboks-XML-fragment; IsDiscardedPart rapporterar om ett delnamn togs bort av en ignoreringsoperation, till exempel rensning av webbtillägg
TXLSFileStorageLoad, LoadFolder, Writeoch WriteFolder överför innehåll i sammansatta filer; Child och Count räknar upp underordnade poster, vart och en en TXLSFileItem — en namngiven lagringsnod vars TXLSFileStream -underklass bär de lagrade bytena som en TXLSBlob med DataSize som rapporterar nyttolastens längd
TXLSBlobAdd lägger till en annan blob, medan AddByte, AddWord, AddLong, AddDouble, AddStringoch AddWideString lägger till typade värden; CopyData, CopyMem, FillByte, Write, Clear, Resetoch Dump hanterar innehållet; Buff och DataLength exponerar lagringen
TXLSBlobListAppend, AppendList, CopyDataoch Write kombinerar eller emitterar poster; Entries och TotalSize exponerar listans tillstånd
TXLSWideStringBuilderAddString lägger till text och Length rapporterar det ackumulerade antalet tecken

Tillägg för ritning och arbetsboksvisare

TXLSFillFormatPictureFill konfigurerar en bildbaserad formfyllning, medan FillType väljer den fyllningstyp (heldragen, toning, bild eller förinställd textur) som skrivaren emitterar
TXLSShapesAddScrollBar och AddSpinner skapar formulärkontroller — de returnerade objekten TXLSScrollBar och TXLSSpinner exponerar kontrollens geometri och länkade cell, och spinnern lägger till steggränserna Min, Maxoch Inc — medan RegisterScrollBar och RegisterSpinner registrerar kontroller som lästs in från en arbetsbok
TXLSWorkbookViewerCanUndo och CanRedo rapporterar transaktionshistorikens tillgänglighet; ClearSelectedRange, CopySelectedRange, PasteSelectedRangeoch PasteText arbetar på det valda området, medan ReferencePickMode möjliggör interaktivt val av cell- eller områdesreferenser
TXLSWorkbookEditHistoryDen headless-baserade innehållstransaktionsmotorn i lxWorkbookViewer binder en lånad Classic- eller XLSX-arbetsbok och tillhandahåller områdesskyddspreflight, Unicode-kopiering och inklistring av text, områdesrensning samt en undo/redo-transaktion per operation; se headless-redigeringstransaktioner
TXLSCellContentSnapshotBåda kalkylbladsklasserna exponerar ReadCellContent(Row, Col) och RestoreCellContent(Snapshot) för fristående fångst och återställning av inbyggt innehåll vid ettbaserade koordinater i det ursprungliga kalkylbladet; fångsten utvärderar inte formler, skapar inte frånvarande celler och materialiserar inte packad lagring, och den oföränderliga NativeData -nyttolasten bevarar rik text, formelcache:er och cellstil; direkt återställning är en lågnivåoperation vars anropare måste validera skydd och strukturella gränser

Paginering, bildutdata och utskrift

XLSValidateCachedChartSceneModel, XLSRecordCachedChartSceneGör preflight av cachad diagrammetadata utan att lösa upp celler och registrerar avgränsade vektor- och textprimitiver för ett fristående diagram i lxPortableChart, med returnering av TXLSPortableSceneObjects samt objekt-, byte- och textredovisning; lxPagination -ingångspunkterna behåller samma delade implementation för befintliga Windows-anropare; den aktuella delmängden täcker ordinära kolumn-, stapel-, linje-, punkt-, cirkel-, ring- och enkelserie-områdesdiagram med en primär plottgrupp, och registrering kräver validerad inbyggd metadata, ändliga strikt ordnade cachepunkter och en fristående diagrammodell; se registrering av cachade diagram
TXLSGraphicsBackendDrawTiledImage målar en bladbakgrund upprepade gånger över det klippta sidoområdet
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBordersoch PaintPageBackground styr sidinnehållet; RenderDPI, RenderColorModeoch RenderSession exponerar utdataupplösning, färghantering och den aktiva renderingssessionen
TXLSCellImageExporterMeasure beräknar pixeldimensioner för klassiska eller XLSX-områden; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaintoch PaginationModel konfigurerar renderingen och ger insyn i den
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColoroch TransparentBackground tillämpar samma paint-krokar och säkerhetsgränser för utdata på paginerad bildexport
TXLSPrintDocumentPrintWorksheet, PrintWorkbookoch PrintAllVisibleSheets skickar klassiskt eller XLSX-innehåll till VCL-skrivaren; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPageoch OnAfterGeneratePage styr utskriftsjobbet

Klassiska diagrammodeller och kalkylbladsdiagramobjekt

TXLSXChartSeriesLineVisible, LineColorRGBoch LineWidthPoints beskriver en oberoende seriestreckning; LineStyleSet, LineColorSetoch LineWidthSet bevarar explicita inställningar, och EffectiveLineVisible löser den äldre endast-fyllnad-konventionen; MarkerFillSet och MarkerBorderSet skiljer explicit svart från automatiska markörfärger, medan linje- och punktdiagrams portabla registrering stöder cirkeldiametrar från 2 till 72 punkter; färg- och breddsättare validerar före mutation och lyder under arbetsbokens läslån
TXLSChartSeriesAddTrendline och AddErrorBars skapar typade serieanteckningar, medan TrendlineCount och ErrorBarCount rapporterar samlingarnas storlekar; det befintliga fältet MarkerSize behåller råa BIFF-twips, medan den skrivskyddade gettern MarkerSizePoints returnerar värdet dividerat med 20, inklusive fraktionerade punktstorlekar
TXLSChartAxisHasAxcExtFlag testar en rå AXCEXT-flagga utan att anroparen behöver avkoda bitmasken
TXLSChartModelAxisGroupCount rapporterar antalet primära och sekundära axelgrupper som avkodats från diagramet
TXLSCustomChartAddAreaData lägger till en färdigbyggd områdespost för formelomkoppling vid sparande och ApplyDateAxisModel tillämpar en typad datumaxelmodell på diagramets råa poster; GetStoredRecordInfo läser ett nollbaserat post-ID och byteantal utan allokering, medan ReadStoredRecord(Index, MaxBytes) kontrollerar bytegränsen innan fristående byte returneras i TXLSChartStoredRecord, utan att utvärdera formler eller ändra cache:er
TXLSWorksheetAddChartObject förankrar en diagramram på kalkylbladet och kopplar den till den gemensamma diagrambyggaren
TXLSXChartLayoutResolverTryResolve slår fast en layoutrektangel med valfri storleksvalidering och ResolveChart beräknar rektanglarna för diagram, titel, legend, plot och axlar

Typad diagramavkodningsmodell

Det avkodade diagramtillståndet exponeras som enkla poster och enum så att inspektionskod aldrig behöver gå igenom råa BIFF-poster: TXLSChartInfo bär den avkodade diagramsammanfattningen med TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), varje serie rapporterar TXLSChartSeriesType, och TXLSChart3DState tillsammans med TXLSChart3DInfo beskriver tredimensionella vyer. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) och TXLSChartLegendPosition klassificerar axlar och legends, medan datumaxelmodellen använder TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) och TXLSChartDateValues. TXLSCustomChart exponerar den avkodade modellen via TXLSChartInfo; trendlinje- och error bar-anteckningar är typade objekt (TXLSChartTrendline, TXLSChartErrorBars) som nås från varje serie

Poster för diagramskapande

Vid skapande via diagramblad och byggare accepteras enkla poster i stället för objektgrafer: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfooch TXLSChartSeriesStyleInfo fyller serieposterna som skickas till TXLSWorksheets.AddChartSheet och den gemensamma diagrambyggaren, och TXLSPivotChartInfo beskriver pivotediagram-inkapslingen som används när ett diagram kopplas till en pivottabell

Inspektion av klassisk diagramfyllnad

TXLSCustomChart.GetChartModel avkodar stödda inbyggda OfficeArt-egenskapstabeller och tertiära egenskapstabeller i GelFrame -poster, inklusive egenskaper som följer komplexa nyttolastposter; den befintliga byggardrepresentationen förblir stödd, och felformade tabellgränser lämnar den tidigare typade fyllnaden oförändrad och rapporterar posten som ostödd

Diagraminspektionen validerar hela den lagrade text- och anteckningsnyttolasten innan typat tillstånd läggs till: trunkerade trendlinjenamn eller dataetikettseparatorer rapporterar sitt post-ID via _UnsupportedSemanticRecordID, medan nil- eller undersized SeriesText -huvuden rapporterar posten som ostödd för både BIFF5 och BIFF8; en deklarerad serietext-utsträckning som överstiger nyttolasten utlöser EReadError, frigör den partiella modellen och lämnar de lagrade diagramposterna oförändrade

Markörgettern och fyllnadsinspektionen bevarar rå diagramlagring; den deklarerade utseendefångst-vägen validerar separat de kärndiagram som stöds, medan overifierade checksummor för rik-titel- eller shape-tillägg förblir ostödda

Avgränsade läsare för lagrat diagram, strängar och typsnitt

TXLSChartStoredBytes är en fristående bytematris och TXLSChartStoredRecord innehåller RecordId och Data; dessa läsare granskar kvarhållen källagring utan att skapa en avkodad diagrammodell eller utvärdera formler

TXLSCustomChart.GetStoredRecordInfoReturnerar ett post-ID och räknad bytelängd för ett nollbaserat postindex utan att kopiera nyttolasten
TXLSCustomChart.ReadStoredRecordKopierar en nyttolast efter validering av indexet och icke-negativ MaxBytes; standardbytegränsen är High(Int64)
TXLSCustomChart.ReadStoredFormulaLeafInfoGranskar ett sammanhängande lagrat BRAI-blad med exakt källkalkylator och icke-negativa byte- och textkvoter; främmande kalkylatorer eller översättningsägare returnerar ett ostött blad, och AllowUnboundBiff har False som standard
TXLSCustomChart.ReadStoredFormulaLiteralReturnerar en fristående literal endast efter samma proveniens- och kvotkontroller; ett ostött blad utlöser EInvalidOperation
TXLSCustomChart.SourceBiffVersion, SourceCodePageSkrivskyddad proveniens för de kvarhållna diagramposterna
TXLSStringTable.GetStoredStringLength, ReadStoredStringRäknar befintlig UTF-16-lagring med tabellens ettbaserade strängidentitet, och kopierar bara när den icke-negativa teckenkvoten täcker den; ogiltiga identiteter och ofullständig UTF-16-lagring avvisas
TXLSFontList.GetStoredNameLength, ReadStoredNameKontrollerar den lagrade fontnyckeln vid listans nollbaserade index innan namnet räknas eller kopieras under en icke-negativ teckenkvot
TMsoFbtOptItem.HasStoredUnicodeStringKontrollerar avgränsad lagrad komplex Unicode-strängmetadata utan att materialisera en sträng
TMsoShapeContainer.HasOrdinaryChartObjectDataKontrollerar lagrad diagramobjekttyp, icke-noll objektidentitet, stödda flaggor och frånvaro av okända objektsvansdata

Underhåll av delad strängtabell och SST-utmatning

TXLSStringTable i lxStringTable bär den klassiska arbetsbokens delade strängar; medlemmarna nedan täcker läsarsideregistrering, slot-underhåll och rå SST-utmatning för roundtrip-sparningar

KeyExists, AddWithExtrasKeyExists rapporterar huruvida en sträng redan upptar en slot; AddWithExtras är läsarsidekompanjonen till Add som fäster den råa rgRun -rik-texten och rgExtRst -fonetiska nyttolasten på posten utan att höja dess referensräknare, eftersom varje refererande cell senare återställer räknaren via den normala tilläggsvägen
Replace, ReplaceIndexReplace släpper en referens vid gamla sloten, frigör den när räknaren når noll, och lägger till texten på nytt, med returnering av den resulterande sloten; ReplaceIndex flyttar en referens från gamla till nya sloten utan att kopiera text
AddSSTData, InitExtIndexAddSSTData emitterar den råa SST-nyttolasten i skrivarens bloblista; överlagringen som tar en fontrun-omkartlaggningstabell skriver om varje FormatRun-fontindex på vägen ut ([MS-XLS] §2.5.129) så att rika runs följer fontomordningen vid sparande, medan en tom tabell behåller äldre verbatim-utmatning, och InitExtIndex numrerar ExtSST-bucketarna över levande slots före utmatning
SlotCount, ExtIndex, ParsedExtSSTDsst, ParsedExtSSTItemCount, BiffSizeLimitSlotCount är den ettbaserade övre gränsen för slot-iteration med borttagna slots som läses tomma, ExtIndex löser en slot till dess ExtSST-bucketnummer eller -1 för en slot som inte är levande, ParsedExtSSTDsst och ParsedExtSSTItemCount behåller importerade EXT/SST-huvudvärden, och BiffSizeLimit avgränsar varje emitterat post-chunk — den klassiska skrivaren sätter den till 2080 byte för BIFF5 och 8224 för BIFF8

PDF-bilagor, signaturer och HTML-export

IXLSPDFAttachmentSourceWriteTo skickar bilagans byte som en ström till PDF-exporten utan att exportören behöver äga källdatan
TXLSPDFExportAttachmentDuplicatePolicy väljer hantering av dubblettnamn, AttachmentSpoolThreshold styr mellanlagringen av bilagor, och DocumentLanguage skriver dokumentets språkmetadata
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBoldoch TextItalic konfigurerar den synliga signaturens utseende
TXLSHTMLExportViewMode (typ TXLSHtmlViewMode: aktuell vy eller fullständig kalkylbladstabell) väljer HTML-presentationen, medan HotTrackTargets (mängd av TXLSHtmlHotTrackTarget) och HotTrackColor konfigurerar interaktiv markering av celler och objekt
TXLSXHtmlExportOptionsViewMode, HotTrackTargetsoch HotTrackColor ger motsvarande kontroller för XLSX HTML-export

Beräkningsgranskning och arbetsbokskontroller

TXLSCalculationAuditReportTruncated rapporterar trunkering vid gränsen för antalet problem, StackTruncated rapporterar trunkering av anropsstackrader, och Issues indexerar de registrerade beräkningsproblemen
TXLSUserFunctionRegistryGeneration ändras närhelst den registrerade uppsättningen användarfunktioner ändras, så att cachade formelbindningar kan ogiltigförklaras
EXLSReportRecoverableDataCategory identifierar kategorin för återvinningsbara rapportdata som presenteras för anroparen
IXLSWorkBookManualCalculationThreadCount begränsar antalet arbetstrådar som manuell beräkning använder
TXLSXDataValidationHasUnknownImeMode rapporterar ett IME-lägesvärde som HotXLS bevarat men inte känner igen
TXLSXTableColumnCalculatedFormulaArrayRaw och ColumnTotalsFormulaArrayRaw exponerar den ursprungliga matrisformeltexten för tabellkolumner

Kompatibilitet med äldre PivotCache-struktur

TXLSPivotCacheRawBucketIndex identifierar positionen i källunderströmmen, RawFramingIsLegacy identifierar en äldre HotXLS-struktur, RawModelIsComplete rapporterar huruvida den typade modellen representerar varje post, och CanUpgradeFraming rapporterar huruvida en frivillig typad återutskrift är säker
TXLSPivotCacheStreamId exponerar den klassiska cacheströmmens identitet, SourceDataType exponerar den klassiska källdatatypen, och RawHasStorageStream rapporterar huruvida en inläst cache kom från en oberoende PivotCache-lagringsström
TXLSWorkbookUpgradeLegacyPivotCacheFraming aktiverar omskrivning av endast äldre HotXLS cachestrukturer vars typade modell är komplett; vanlig rå cache-replay förblir standardvärdet

StreamId skrivs som posten SXStreamID ([MS-XLS] §2.4.303) och upprepas som SXDB -huvudets fält idstm , som måste vara detsamma; SourceDataType skrivs som posten SXVS ([MS-XLS] §2.4.317: $0001 kalkylblad, $0002 extern, $0004 konsolidering, $0010 scenario) och upprepas som SXDB -huvudets fält vsType , som måste vara detsamma. Cachar byggda från ett kalkylbladsområde börjar vid kalkylbladstypen, medan cachar som lästs tillbaka från en fil behåller det värde deras underström bar, så att BIFF-skrivaren aldrig lämnar ett SXDB -fält som namnger en post den inte skrev; RawHasStorageStream markerar en cache som lästs från sin egen lagringsström och vars arbetsboksglobala beskrivare föregår de cachade posterna

Urklippsintegrering och klistringsalternativ

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;
      
Klistringsalternativen delas av båda facadernas PasteFromClipboard -överlagringar: xlpoValuesOnly behåller de cachade värdena i formelceller och hoppar över format och sammanslagningar, medan xlpoInsertRows och xlpoInsertCols skjuter befintligt innehåll åt sidan innan blocket landar
Hjälpfunktionerna lindar in Windows urklipp för kalkylblads-interop: texthjälparna använder CF_UNICODETEXT (med fallback till CF_TEXT via den aktuella ANSI-kodsidan), XLSSetClipboardTextAndHtml skriver text och en formaterad HTML Format -nyttolast i en transaktion, XLSBuildHtmlClipboard beräknar CF_HTML-byteoffseterna för ett dokument eller fragment, och XLSEncodeClipboardField citaterar ett tabbseparerat fält. XLSParseClipboardGrid tolkar urklippstext som tabbseparerade rader med samma typsniffning som TXLSCSVLoader använder för CSV, XLSParseXmlSpreadsheet kör samma loader-fyllning över en SpreadsheetML 2003-nyttolast som hämtats med XLSGetClipboardXmlSpreadsheet, och Biff8 -hjälparna detekterar och läser den inbyggda ström som Excel själv lägger på urklippet så att inklistrade data behåller värden, formler och formatering utan textförlust
XLSReadClipboardPasteData fångar Biff8 -strömmen och Unicode-texten under ett enda urklippslås, så en inklistring aldrig behöver öppna urklippet igen mellan de två läsningarna och inte förlorar något av formaten till en samtidig innehavare. XLSSetClipboardBiff8 är motsvarande skrivsida: den lägger BIFF8-compound-file-strömmen, tabbseparerad Unicode-text och en valfri CF_HTML-nyttolast i en transaktion — skicka en tom Text eller Html för att hoppa över något av följeformaten, medan Biff8 -delen är obligatorisk

Upplösning av cellvisningstext

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;
      
En gemensam resolver avgör vad en cell visar för ett givet visningstillstånd: formler i stället för värden, undertryckta nollor, dold formeltext på skyddade blad och den dubblerade breddfaktorn som Excel tillämpar vid formelvisning. Arbetsboksvisaren och renderarna anropar den via sina ingångspunkter för visningsalternativ, och applikationer kan anropa XLSResolveCellDisplay direkt med egna indataposter; XLSDefaultCellDisplayOptions returnerar de kanoniska standardvärdena och XLSNormalizeFormulaDisplayText normaliserar en formelsträng för visning

Klassiska datavalideringsobjekt

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

TDVRange = class;             { one validation rule over one or more ranges }
TDVRangeList = class;         { the per-sheet rule collection }
TDataValidator = class;       { engine that checks edits against the rules }
      
De typade TXLSWorksheet.Add*Validation -hjälpfunktionerna skapar TDVRange -regler i bladets TDVRangeList; varje regel bär sin TXLSDataValidationType, gränser, indata- och felmeddelanden samt TXLSDvErrorStyle. TDataValidator utvärderar en redigering mot reglerna och rapporterar huruvida värdet är godtagbart, vilket också är kontrollen bakom Excels egna valideringstips

Skanning och upplösning av indexerade färger

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);
      
Dessa poster ligger bakom arbetsbokens metoder ResolveIndexedColor, NearestIndexedColoroch ScanIndexedColorUsage : en upplösning rapporterar vilken av de fyra TXLSIndexedColorKind -källorna en indexerad token kom från, tillsammans med dess palettplats, systemfärgsroll och normaliserade ARGB, en närmaste-matchning lägger till kvadrerat RGB-avstånd och flagga för exakt träff, och användningsskanningen taggar varje konsumentkategori som låser en palettplats. Biblioteket håller en intern TXLSIndexedColorMatcher -cache nycklad efter palettgeneration — FindNearest besvarar närmaste-färg-frågor från den och UpdateSlot uppdaterar en palettplats — så upprepade upplösningar förblir allokeringsfria

Hjälpfunktioner för A1-referenser

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;
      
Fristående hjälpfunktioner för samma A1-notation som arbetsboks-API:erna accepterar: de formaterar nollbaserade koordinater som en A1-cellreferens och tolkar cell- eller områdesreferenser i omvänd riktning, med False som svar på felformaterad indata i stället för att kasta undantag

Se även