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
TXLSAutofilter | Add, 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 |
TXLSAutofilterItem | Shape 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 |
TXLSDataBarSpec | AxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTintoch ClearAxisThemeColor styr axeln; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositiveoch NegativeBorderColor styr stapelns utseende; IsIndexedColor, IndexedColorIndexoch ClearIndexedColor hanterar stapelns palettindexfärg |
TXLSIconSetSpec | ThresholdEqualsInclude väljer inkluderande eller exkluderande jämförelse för varje ikontröskel |
TXLSCfValue | IsIndexedColor 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
TXLSDataTable | Assign, ContainsCelloch IsRoot kopierar och inspekterar en tabell; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRowoch RowInputDeleted exponerar den lagrade beräkningsdefinitionen |
TXLSDataTables | Add, 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 |
TXLSPivotCacheField | GroupBaseField 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
TXLSDiagnostic | Code, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetNameoch StreamOffset identifierar en enskild tolkar-, skrivar- eller paketdiagnos |
TXLSDiagnostics | Add lägger till en diagnos, Clear återställer samlingen, och Count tillsammans med Items räknar upp dess poster |
TXLSDiagnosticSeverity and TXLSDiagnosticOperation | TXLSDiagnosticSeverity (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 |
TXLSFormulaDebugSession | CurrentStep, DependencyCount, NodeCountoch StepCount exponerar felsökarens aktuella ögonblicksbild och dess spårstorlekar |
TXLSFormulaTracer | StepCount rapporterar antalet registrerade utvärderingssteg |
TXLSImportCheck | AddRule, 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
TlxImportColumnRule | Column, 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 |
TlxImportRuleFlags | irRequired, 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 |
TlxImportValueKind | ivkAny 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 |
TlxImportDateSerialMode | idsNone ä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): TlxImportUniqueRule | Lä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): TlxImportCrossColumnRule | Lägger till en jämförelse inom raden med skrivskyddade LeftColumn och RightColumn, en redigerbar Comparison, Name, Titleoch SkipBlankValues, som har True som standard |
TlxImportComparison | icEqual, 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
TlxImportViolation | Row, 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 |
TlxImportViolationKind | ivRequired, 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
Sparpolicyer för externa länkar
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);
property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
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 arbetsboksstrukturAbsoluteTolerance 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 cacharTXLSCalculationAuditReport.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 -problemRunCalculationAudit ä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)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ärdenaTabellformler och IME-tillstånd
property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
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
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;
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;
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
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;
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]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
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
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
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
TXLSHTMLImport | LoadFromHTML -överlagringarna importerar HTML-tabellinnehåll från en ström eller fil till ett kalkylblad, med valfria startkoordinater, tabellval och decimaltecken |
TXLSCodeGen | Language (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) |
TXLSXWorkbookCompare | Compare 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 |
TXLSFileMonitor | IntervalMs 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 TXLSCSVSaver | Laddaren 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
lcoFormulaCachedResults | Fö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 |
lcoCellStyles | Jä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 |
lcoAxisGeometry | Jä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 |
lcoDefinedNames | Jä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 |
lcoDataValidations | Jä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 |
lcoConditionalFormats | Jä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 |
lcoTables | Parar 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 |
lcoDrawings | Jä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 |
lcoBlankStyleRegions | Jä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 |
lcoRichTextRuns | Jä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 |
lcoPivotTables | Parar 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 |
lcoPivotCaches | Parar 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 |
lcoSlicerState | Parar 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 |
lcoTimelineState | Parar 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
| Medlem | Kontrakt |
|---|---|
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.AddRawString | Lägger till exakta kodade byte utan en AnsiString-kodsidkonvertering och uppdaterar DataLength; tom indata lägger till inga byte |
TXLSCalculator.CodePage, TXLSFormula.FCodePage | Vä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.GetStyleBlob | Det valfria argumentet CodePage har 1252 som standard och kodar BIFF5-text; BIFF8-utdata förblir Unicode |
TMsoDrawing.StoreNotes | Det 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.SetSourceData | De 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.GetExternalData | Det 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 compilation | ClearDefinition 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 flags | StoreIndex 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, ColsCount | Rapporterar 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 attributes | Indexerade 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, FmtExists | AddValue 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, IsDateFormatValue | IsDateFormat 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, AddBuiltinStyle | AddStyle 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.BuiltinStyleName | Klassfunktion 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
TXLSXOpaquePackage | LoadWorkbookXmlMetadata 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 |
TXLSFileStorage | Load, 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 |
TXLSBlob | Add 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 |
TXLSBlobList | Append, AppendList, CopyDataoch Write kombinerar eller emitterar poster; Entries och TotalSize exponerar listans tillstånd |
TXLSWideStringBuilder | AddString lägger till text och Length rapporterar det ackumulerade antalet tecken |
Tillägg för ritning och arbetsboksvisare
TXLSFillFormat | PictureFill konfigurerar en bildbaserad formfyllning, medan FillType väljer den fyllningstyp (heldragen, toning, bild eller förinställd textur) som skrivaren emitterar |
TXLSShapes | AddScrollBar 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 |
TXLSWorkbookViewer | CanUndo 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 |
TXLSWorkbookEditHistory | Den 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 |
TXLSCellContentSnapshot | Bå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, XLSRecordCachedChartScene | Gö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 |
TXLSGraphicsBackend | DrawTiledImage målar en bladbakgrund upprepade gånger över det klippta sidoområdet |
TXLSPaginationModel | CompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBordersoch PaintPageBackground styr sidinnehållet; RenderDPI, RenderColorModeoch RenderSession exponerar utdataupplösning, färghantering och den aktiva renderingssessionen |
TXLSCellImageExporter | Measure 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 |
TXLSPageImageExporter | BeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColoroch TransparentBackground tillämpar samma paint-krokar och säkerhetsgränser för utdata på paginerad bildexport |
TXLSPrintDocument | PrintWorksheet, PrintWorkbookoch PrintAllVisibleSheets skickar klassiskt eller XLSX-innehåll till VCL-skrivaren; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPageoch OnAfterGeneratePage styr utskriftsjobbet |
Klassiska diagrammodeller och kalkylbladsdiagramobjekt
TXLSXChartSeries | LineVisible, 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 |
TXLSChartSeries | AddTrendline 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 |
TXLSChartAxis | HasAxcExtFlag testar en rå AXCEXT-flagga utan att anroparen behöver avkoda bitmasken |
TXLSChartModel | AxisGroupCount rapporterar antalet primära och sekundära axelgrupper som avkodats från diagramet |
TXLSCustomChart | AddAreaData 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 |
TXLSWorksheet | AddChartObject förankrar en diagramram på kalkylbladet och kopplar den till den gemensamma diagrambyggaren |
TXLSXChartLayoutResolver | TryResolve 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.GetStoredRecordInfo | Returnerar ett post-ID och räknad bytelängd för ett nollbaserat postindex utan att kopiera nyttolasten |
| TXLSCustomChart.ReadStoredRecord | Kopierar en nyttolast efter validering av indexet och icke-negativ MaxBytes; standardbytegränsen är High(Int64) |
| TXLSCustomChart.ReadStoredFormulaLeafInfo | Granskar 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.ReadStoredFormulaLiteral | Returnerar en fristående literal endast efter samma proveniens- och kvotkontroller; ett ostött blad utlöser EInvalidOperation |
| TXLSCustomChart.SourceBiffVersion, SourceCodePage | Skrivskyddad proveniens för de kvarhållna diagramposterna |
| TXLSStringTable.GetStoredStringLength, ReadStoredString | Rä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, ReadStoredName | Kontrollerar den lagrade fontnyckeln vid listans nollbaserade index innan namnet räknas eller kopieras under en icke-negativ teckenkvot |
| TMsoFbtOptItem.HasStoredUnicodeString | Kontrollerar avgränsad lagrad komplex Unicode-strängmetadata utan att materialisera en sträng |
| TMsoShapeContainer.HasOrdinaryChartObjectData | Kontrollerar 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, AddWithExtras | KeyExists 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, ReplaceIndex | Replace 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, InitExtIndex | AddSSTData 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, BiffSizeLimit | SlotCount ä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
IXLSPDFAttachmentSource | WriteTo skickar bilagans byte som en ström till PDF-exporten utan att exportören behöver äga källdatan |
TXLSPDFExport | AttachmentDuplicatePolicy väljer hantering av dubblettnamn, AttachmentSpoolThreshold styr mellanlagringen av bilagor, och DocumentLanguage skriver dokumentets språkmetadata |
TXLSPDFSignature | TextAlign, TextSize, TextColor, TextBoldoch TextItalic konfigurerar den synliga signaturens utseende |
TXLSHTMLExport | ViewMode (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 |
TXLSXHtmlExportOptions | ViewMode, HotTrackTargetsoch HotTrackColor ger motsvarande kontroller för XLSX HTML-export |
Beräkningsgranskning och arbetsbokskontroller
TXLSCalculationAuditReport | Truncated rapporterar trunkering vid gränsen för antalet problem, StackTruncated rapporterar trunkering av anropsstackrader, och Issues indexerar de registrerade beräkningsproblemen |
TXLSUserFunctionRegistry | Generation ändras närhelst den registrerade uppsättningen användarfunktioner ändras, så att cachade formelbindningar kan ogiltigförklaras |
EXLSReportRecoverableData | Category identifierar kategorin för återvinningsbara rapportdata som presenteras för anroparen |
IXLSWorkBook | ManualCalculationThreadCount begränsar antalet arbetstrådar som manuell beräkning använder |
TXLSXDataValidation | HasUnknownImeMode rapporterar ett IME-lägesvärde som HotXLS bevarat men inte känner igen |
TXLSXTable | ColumnCalculatedFormulaArrayRaw och ColumnTotalsFormulaArrayRaw exponerar den ursprungliga matrisformeltexten för tabellkolumner |
Kompatibilitet med äldre PivotCache-struktur
TXLSPivotCache | RawBucketIndex 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 |
TXLSPivotCache | StreamId 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 |
TXLSWorkbook | UpgradeLegacyPivotCacheFraming 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;
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 landarCF_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örlustXLSReadClipboardPasteData 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 obligatoriskUpplö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;
XLSResolveCellDisplay direkt med egna indataposter; XLSDefaultCellDisplayOptions returnerar de kanoniska standardvärdena och XLSNormalizeFormulaDisplayText normaliserar en formelsträng för visningKlassiska 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 }
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 valideringstipsSkanning 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);
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 allokeringsfriaHjä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;
False som svar på felformaterad indata i stället för att kasta undantag