HotXLS dokumentáció

További könyvtári API-tagok

Ez az oldal kiegészíti azon nyilvános típusok referenciáját, amelyek támogatják az elsődleges munkafüzet-, munkalap-, megjelenítési, import-, diagnosztikai és megjelenítő-API-kat, de nem igényelnek külön feladatorientált útmutatót

Szűrés és feltételes formázás

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clear és ParseAutofilterData szerkeszti vagy importálja a szűrődefiníciót; a Defined, FirstRow, FirstCol, LastCol, LastRow és FieldCount felfedi az aktív határait és a szűrt oszlopok számát
TXLSAutofilterItemA Shape felfedi az elemhez társított szűrőgomb-rajzolást, a betöltött szűrőfeltétel pedig TXLSAutofilterDOPER operandusrekordként érhető el — a DataType választja ki az operandus alakját, a grbitSgn pedig az előjelet és a jelzőbiteket hordozza — ellenőrzéshez vagy round-trip szerkesztéshez
TXLSDataBarSpecAz AxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTint és ClearAxisThemeColor vezérlik a tengelyt; a Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositive és NegativeBorderColor vezérlik a sáv megjelenését; az IsIndexedColor, IndexedColorIndex és ClearIndexedColor kezelik a palettaindekes sávszínt
TXLSIconSetSpecA ThresholdEqualsInclude befogadó vagy kizáró összehasonlítást választ minden ikonküszöbhöz
TXLSCfValueAz IsIndexedColor és IndexedColorIndex örökölt palettaindexként tárolt küszöbszínt jelez, a ClearIndexedColor eltávolítja ezt a formát, a téma- vagy literálszínek pedig a meglévő elérésőkön keresztül maradnak elérhetők

A TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpec és TXLSDxfStyle elfogadja az AttachWriteGuardOwner-t, amely a szabályobjektumot a tulajdonos munkafüzethez kapcsolja, így a szerkesztések automatikusan írásőrzőt szereznek; a tulajdonos megvalósítja a TXLSCondFormatWriteGuardOwner felületet, amelynek egyetlen AcquireWriteGuard metódusa a munkafüzet írásőrzőjét adja át a szabálynak. A TXLSDxfStyle hozzáadja a FontColorIndex-et a FontColorIsIndexed-del, valamint a FillFgColorIndex / FillFgColorIsIndexed és FillBgColorIndex / FillBgColorIsIndexed párokat a palettaindekes szabályszínekhez, továbbá a differenciális font felülbírálásokat: FontName, FontSize és FontScheme (üres karakterlánc, pontban megadott méret vagy major / minor jellegű témafont-slót) a meglévő félkövér, dőlt, aláhúzott és szín tagok mellett; minden értékadás megszerzi az írásőrzőt, és megjelöli a szabályt dirty állapotban az újrakibocsátáshoz

A TXLSConnections, TXLSDataTables és TXLSQueryTables felfedi az OnAcquireWriteGuard-ot (típus: TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuard és TXLSQueryTableAcquireWriteGuard), azt a horogot, amelyen keresztül szerkesztési útvonalaik a mutáció előtt megszerzik a tulajdonos munkafüzet IXLSWorkbookWriteGuard objektumát, majd előremozdítják a munkafüzet-generációt; az őrző rögzíti a StartGeneration-t, a Complete pedig befejezettnek jelöli az írást, így újraépülhetnek a függő gyorsítótárak

A megőrzött adatkapcsolatok típusos leírást hordoznak: a TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) osztályozza a kapcsolatot, a TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) rögzíti a hitelesítési módját, minden kapcsolatparaméter-érték pedig TXLSConnectionParameterValueKind címkét kap (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). A what-if adattáblák a tárolt definíciójuk fajtáját a TXLSDataTableKind segítségével jelentik

What-if adattáblák és kimutatás-csoportosítás

TXLSDataTableAz Assign, ContainsCell és IsRoot másolja és megvizsgálja a táblát; a Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRow és RowInputDeleted felfedi a tárolt számítási definíciót
TXLSDataTablesAz Add, AddExisting, Delete, Clear, Assign, AdjustForShift és Offset karbantartja a gyűjteményt; a FindByCell és FindRoot megkeresi az adott cellát tartalmazó vagy abból gyökerező táblát; a Count, Items és OnChange felfedi a gyűjtemény állapotát
TXLSPivotCacheFieldA GroupBaseField és GroupParentField felfedi a csoportosított mező és annak forrás- vagy szülőmezeje közötti kapcsolatokat

Az ikonkészlet küszöbértékei programozottan is kirajzolhatók vagy érvényesíthetők: az XLSCfIconSetCount jelenti, hogy egy TXLSIconSetType hány ikont definiál, az XLSBuildCfIconGeometry pedig egy TXLSCfIconGeometry struktúrát tölt meg az egy ikont megrajzoló primitívekkel (TXLSCfIconPrimitive, fajta: TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) és pontokkal (TXLSCfIconPoint), így az egyéni rendererek illeszkednek az Excel beépített ikonalakjaihoz

Diagnosztika, képlet-nyomkövetés és érvényesítés

TXLSDiagnosticA Code, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName és StreamOffset egy elemző-, író- vagy csomagdiagnosztikát azonosítanak
TXLSDiagnosticsAz Add hozzáfűz egy diagnosztikát, a Clear visszaállítja a gyűjteményt, a Count és Items pedig felsorolja a bejegyzéseit
TXLSDiagnosticSeverity és TXLSDiagnosticOperationA TXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) egy diagnosztikát osztályoz, a TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) pedig megnevezi azt a fázist, amely előállította; az OnDiagnostic kezelők mindkettőt a kézbesített TXLSDiagnostic-ból olvassák ki
TXLSFormulaDebugSessionA CurrentStep, DependencyCount, NodeCount és StepCount felfedi az aktuális hibakereső pillanatképet és a nyomkövetés méreteit
TXLSFormulaTracerA StepCount jelenti a rögzített kiértékelési lépések számát
TXLSImportCheckAz AddRule, Annotate, KeepOnlyViolations és Violation konfigurálják és futtatják az import érvényesítését; a HeaderRow, FirstRow, LastRow, OnVerifyCell és ViolationCount felfedik a határait, visszahívását és az eredmények számát. A szabályok TlxImportColumnRule objektumok, amelyeknek TlxImportRuleFlags jelzői választják ki az ellenőrzéseket egy 1 alapú munkalaposzlophoz, minden TlxImportViolation pedig jelenti a sort, az oszlopot, a sértő szöveget és a hibaüzenetet
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Mindkét engine alapértelmezetten menti a gyorsítótárazott értékeket, és a xluPromptUser-t használja; a xluNever és xluAlways csak a munkafüzetben tárolt frissítési előbeállítást változtatja meg, és soha nem hatalmaz fel, illetve nem indít külső fájl- vagy hálózati hozzáférést

Számítási audit és munkafüzet-tippek

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;
      
A RecalcAndVerify a képletszimbólum-hibákat és a gyorsítótárazott értékek eltéréseit stabil, strukturált kategóriákba rendez munkalap-koordinátákkal, képletekkel, szimbólumokkal, várt és tényleges értékekkel, valamint korlátos csonkolással, miközben a gyorsítótárakat és a munkafüzet szemantikáját érintetlenül hagyja. A RecalcAndVerifyEx a mély auditot futtatja: minden képletet egyszer kiértékel a függőségi gráfon keresztül egy izolált eredmény-overlay-be, így a függő cellák ezt a futást olvassák az elavult gyorsítótárak helyett; eredménykódokkal osztályozza a kiértékelési hibákat (nem támogatott argumentumok, körkörös hivatkozások, tiltott vagy hiányzó külső hivatkozások, kihagyott adattáblák, megszakítás, belső hibák), hibánként korlátos hívási veremet rögzít, tiszteletben tartja a problémaköltségvetést és a haladási/megszakítási visszahívást, és csak olvasható marad, kivéve ha az ApplyResults a teljesen sikeres futás után atomikusan rögzíti az újraszámolt értékeket egy változatlan munkafüzet-struktúrán
A TXLSCalculationAuditReport.Issues minden eleme egy TXLSCalculationAuditIssue; a Kind az xlcai* kategóriák egyikét választja ki, az Expected / Actual a gyorsítótár-eltérések összehasonlított értékeit hordozza, a Stack a korlátos kiértékelési hívólánc, amely Sheet!A1 > Sheet!B2 alakban jelenik meg (a legkülső kerettel kezdve), az ExternalTarget pedig a külső munkafüzetet írja le a külső hivatkozási problémáknál. A TXLSRecalcAuditOptions.OnProgress egy TXLSRecalcAuditProgress fogadó, amely ACurrent / ATotal csomóphaladást kap, és az ACancel beállításával a következő csomóphatárnál leállíthatja az auditot egyetlen xlcaiCancelled problémával
A RunCalculationAudit az az engine-belépési pont, amelyre a munkafüzet-szintű audit burkolók delegálnak, és ugyanazt az options rekordot fogadja. A FormulaIsVolatile jelenti, hogy egy képlet minden futásnál kényszerít-e újraszámítást (például NOW, RAND, TODAY, OFFSET, INDIRECT hívások vagy feloldhatatlan hivatkozás esetén)
Az audit-overlay a cellagyorsítótárak fölötti what-if réteg: az AuditOverlayWrite egy cella pótoló értékét tárolja (1 alapú munkalapindex, a kalkulátor konvenciójának megfelelő 0 alapú sor és oszlop), az AuditOverlayRead és az AuditOverlayHash lekérdezi, az AuditOverlayClear pedig kiüríti a réteget. A ráírt értékeket a normál cellaérték-lekérdezők adják vissza, így az újraszámítás és a mély audit úgy figyeli őket, hogy közben nem módosítja a munkalap celláit; az overlay törlése visszaállítja a tárolt értékeket
A munkafüzet-tipp tulajdonságok megtartják a hiányzó, false, true, letiltott, automatikus és kézi állapotokat ott, ahol a forrásformátum támogatja őket; megnyitáskor soha nem indítanak számítást, frissítést, fájlrendszer-, hálózati vagy adatbázis-munkát

Táblaképlet- és IME-állapot

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
A számított oszlopok és a végösszegsorok képletei egymástól független hiányzó, false, true vagy ismeretlen tömbállapotokat tartanak, az érintetlen forráslexikális értékekkel és az oszlopstruktúra szerkesztéseivel együtt; a tömbképleteket a skaláris sorkiterjesztés elutasítja, ahelyett hogy csendben megváltoztatná őket
Az IME módok explicit BIFF és OOXML leképezéseket használnak, megőrzik az ismeretlen forrásértékeket, és elutasítják a csak OOXML-ben létező disabled értéket, ha Classic XLS-hez szerkesztik
A SaveExternalLinkValues False-ra állítása kihagyja a classic XCT és CRN rekordokat vagy az XLSX külső munkafüzet sheetDataSet alstruktúráját, miközben megőrzi a hivatkozási célokat, a munkalapneveket, a külső definiált neveket, a kapcsolatokat, a képlethivatkozásokat, az ismeretlen XML-t és a memóriabeli gyorsítótárat; a tulajdonság True-ra állítása ugyanazon a munkafüzeten újra szerializálhatja ezt a megtartott gyorsítótárat
Az érintetlen, nem támogatott forrástokenek bájtról bájtra vagy lexikálisan megőrződnek, az explicit hozzárendelések csak legális értékeket bocsátanak ki, a változatlan XLSX részek megtartják a tömörített másolási útvonalat, és az XLS/XLSX konverzió mindkét szabályzatot átviszi; az ODS és szöveges munkafüzeteknek nincs egyenértékű deklarációjuk, és az alapértelmezésekkel nyílnak meg, míg a megőrzött DDE és OLE hivatkozásrészeket nem kezelik külső munkafüzet cellagyorsítótáraként

Webes bővítmény feladatpanelek vizsgálata és eltávolítása

function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
      
A vizsgálati metódusok csak olyan belső, csomaggyökér-relációkat ismernek fel, amelyek típusa pontosan egyezik a webes bővítmény feladatpanel-relációtípusával; a külső relációkat, a nagybetűzésben eltérő típusokat, a munkalap-relációkat és a hasonlóan nevezett részeket figyelmen kívül hagyják
Az eltávolítás először érvényesíti a teljes relációgráfot, beleértve a normalizált célokat, a csomaggyökérre korlátozást, a ciklusokat, a hiányzó részeket és az erőforráskorlátokat; majd eltávolítja az összes egyező gyökérrelációt, és csak a másik megtartott reláció által nem megosztott elérhető részeket, együtt a törölt források által birtokolt reláció-részekkel
A művelet atomikus és idempotens, az eltávolított forrásrészek nem jelenhetnek meg újra tömörített másolati mentéssel, a tartalomtípusok pedig a megmaradt csomagból épülnek újra; a hibás gráfok hozzáadják a 1303 diagnosztikai kódot, és mutáció előtt kivételt váltanak ki, míg a Classic XLS és az ODS False, 0 és -1 értéket ad vissza csomagátvizsgálás nélkül

Munkafüzet objektummegjelenítési szabályzat

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;
      
A Classic XLS a három állapotot a munkafüzet objektummegjelenítési rekordjára képezi le, az XLSX pedig a workbookPr.showObjects mezőre; a hiányzó értékek alapértelmezése xlsodmShowAll, az érintetlen, fenntartott Classic hasznos adatok és a nem támogatott XLSX tokenek veszteségmentesek maradnak, az explicit hozzárendelések pedig csak kanonikus értékeket bocsátanak ki
A megjelenítő a placeholder módot könnyűsúlyú dobozként rajzolja ki, amely hordozza az elérhető objektumtípust, nevet, szöveget és alternatív szöveget; az exportőrök alapértelmezetten megtartják a teljes objektumokat, míg az ExportObjectPlaceholders beállítása ugyanezt a költséghatékony szabályzatot kéri képhasznos-adat dekódolás vagy diagramjelenetek felépítése nélkül
A xlsodmHideAll megakadályozza a rajzgyűjtemény és az objektumvezérelt tartománykiterjesztést, mielőtt a megjelenítés elindulna; a munkafüzet-konverzió mindhárom állapotot átviszi, az ODS a placeholder módhoz teljes rajzokat ír, a hide-all módhoz pedig kihagyja a rajz- és médiumkimenetet, a munkalap-hátterek pedig függetlenek maradnak

Megjelenítési kalibrációs értékek és pillanatképek

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;
      
Az alapértelmezett értékek 1, 1, 1, 1, 100 és 96; a szélesség- és magasságkorrekcióknak nullánál nagyobbnak és kettőnél kisebbnek kell lenniük, a sorköz határa (0, 4], a cellamargóé [0, 4], a képernyőskála határa [100, 500] százalék, a mérési DPI-é pedig [36, 2400]
A Classic XLS és XLSX munkafüzetek ugyanazokat a RenderCalibration, CaptureRenderCalibration és ResetRenderCalibration tagokat fedik fel; a teljes rekord hozzárendelése mutáció előtt érvényesít, és minden rögzítés konvenció szerint változtathatatlan, egyetlen megjelenítési művelethez tartozó független értékpillanatképet ad vissza

Megjelenítési geometria és betűtípusmérés

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;
      
Az IXLSRenderGeometry egyetlen változtathatatlan kalibrációt, munkafüzet-generációt, backend-identitást, GDI mérőfelületet és korlátos, művelethelyi metrikus gyorsítótárat birtokol; a MeasureText pixelben adja vissza a szélességet, magasságot, sormagasságot, felső és alsó kiterjedést és a sorok számát, míg a MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPoints és UsableCellWidthPixels a megosztott geometriai konverziókat biztosítják
A gyorsítótár-identitás magában foglalja a backendet, a munkafüzet-generációt, az összes kalibrációs értéket, a betűtípus nevét, a pontos méretet, a stílusokat, a karakterkészletet, a tördelési szélességet és a szöveget; a szélesség- és magasságkorrekció egyszer alkalmazódik a szöveg mérésekor, a sorköz csak a többsoros magasságot befolyásolja, a cellamargó-korrekció csak a használható szövegszélességet, a képernyőskála pedig csak az implicit oszlopszélességekhez tartozó maximális számjegyszélesség-emulációt
A Classic XLS és XLSX automatikus illesztése (AutoFit) nyilvános műveletenként egy szolgáltatást rögzít, beleértve az egyesített tartományok és a kétfázisú MarkSheet mérést, míg a TXLSPaginationModel.Build egy szolgáltatást rögzít a kiválasztott RenderBackend-hez; a PDF, SVG, bitmap, nyomtatási előnézet, munkafüzet-megjelenítő és HTML belépési pontok a kimenet előtt a saját backendüket választják, a munkafüzet kalibrációjának módosítása nem mutálhatja a meglévő pillanatképet, és a kimenet nem írja ki a munkalap méreteit
A közvetlen HTML munkafüzet-, munkalap- és tartományhívások friss xlsrgbHtml szolgáltatást rögzítenek, míg a növekményes TXLSXHtmlExportSession egyszer rögzít a BeginExport-ban, és ezt a pillanatképet használja újra minden munkalaphoz; mindkét exportőr a megtartott szolgáltatást a RenderGeometry segítségével fedi fel a kalibráció és a gyorsítótár diagnosztikájához
A csak olvasható IXLSRenderGeometry tulajdonságok, a WorkbookGeneration, CacheCapacity és CacheEntryCount diagnosztikai célból jelentik a kötött generációt és a gyorsítótár telítettségét, az ImplicitWidthMaximumDigitWidthPixels pedig az implicit oszlopszélesség-emuláció mögötti számjegyszélesség-mérést adja vissza
A MeasureText egy TXLSRenderTextMetrics rekordot tölt meg (pixelszélesség, magasság, sormagasság, felső és alsó kiterjedés, sorok száma) egy TXLSRenderFont alapján, amelynek Styles tagja TXLSRenderFontStyle jelzők halmaza (félkövér, dőlt, aláhúzott, áthúzott)

Import, kódgenerálás, összehasonlítás és monitorozás

TXLSHTMLImportA LoadFromHTML túlterhelések HTML táblatartalmat importálnak streamből vagy fájlból egy munkalapba, opcionális kezdőkoordinátákkal, táblaválasztással és tizedes elválasztóval
TXLSCodeGenA Language (típus: TlxCodeGenLanguage: lcgDelphi vagy lcgCppBuilder) választja ki a generált utasítások forrásdialektusát, a GenerateToList a generált munkafüzetkódot karakterlánclistába írja, a TlxCodeGenOptions pedig összevonásokkal, oszlopszélességekkel vagy számformátumokkal bővíti a kimenetet (cgoMerges, cgoColumnWidths, cgoNumberFormats; munkalapok és cellák mindig kerülnek kiírásra)
TXLSXWorkbookCompareA LeftName és RightName felcímkézi a bemeneteket, a Compare elvégzi az összehasonlítást, a Diff pedig felfedi az eredményül kapott TlxCompareDiff bejegyzéseket azok TlxCompareKind szerinti besorolásával
TXLSFileMonitorAz IntervalMs kiválasztja a lekérdezési időközt, a SynchronizeEvent pedig a szinkronizált visszahívás-kézbesítést; egy OnFileChanged kezelő deaktiválhatja vagy megsemmisítheti a monitort, illetve megváltoztathatja a FileName-ot, hogy másik fájlt figyeljen
TXLSCSVLoader és TXLSCSVSaverA loader elválasztójeles szöveget tölt be egy memóriabeli Variant rácsba — a ParseFile és a ParseStream tölti a rácsot, a CellValue, RowCount és ColCount olvassa vissza — automatikusan felismert elválasztóval (ValueSeparator) és kódolással (TXLSCsvEncoding: rendszer ANSI, UTF-16, UTF-8), az opcionális típusemelést pedig a DetectTypes és az oszloponkénti ColumnTypes bejegyzések vezérlik (TXLSCsvColumnType: auto, szöveg, szám, dátum, logikai, kihagyás); a SkipRows, AutoTrim, LocaleTolerantNumbers és FieldWidths finomítja a fix szélességű és a területi beállítások kezelését. A TXLSCSVSaver.SaveAs RFC 4180 idézéssel írja vissza a rácsot, a QuoteAllStrings kényszeríti az idézést; a TXLSTSVSaver a saverből származik a tabulátorral elválasztott kimenethez

Csomag- és bináristároló-segédek

TXLSXOpaquePackageA LoadWorkbookXmlMetadata rögzíti a munkafüzet szintű XML-állapotot, a MarkAllPartsClean visszaállítja a módosultsági jelzőket, a WorkbookExtLstXml és WorkbookRootAttributesXml pedig felfedi a megőrzött munkafüzet-XML töredékeket; az IsDiscardedPart jelzi, hogy egy résznevet eltávolított-e egy elvetési művelet, például a webes bővítmények takarítása
TXLSFileStorageA Load, LoadFolder, Write és WriteFolder összetett fájltartalmat visz át; a Child és Count felsorolja a gyermekbejegyzéseket, amelyek mindegyike egy TXLSFileItem — egy elnevezett tárolócsomópont, amelynek TXLSFileStream alosztálya a tárolt bájtokat TXLSBlob-ként hordozza, a DataSize pedig jelenti a hasznos adat hosszát
TXLSBlobAz Add hozzáfűz egy másik blobot, míg a AddByte, AddWord, AddLong, AddDouble, AddString és AddWideString típusos értékeket fűz hozzá; a CopyData, CopyMem, FillByte, Write, Clear, Reset és Dump kezeli a tartalmat; a Buff és DataLength felfedi a tárolót
TXLSBlobListAz Append, AppendList, CopyData és Write kombinálják vagy kibocsátják a bejegyzéseket; az Entries és TotalSize felfedi a lista állapotát
TXLSWideStringBuilderAz AddString szöveget fűz hozzá, a Length pedig jelenti a felhalmozott karakterszámot

Rajzolási és munkafüzet-megjelenítő bővítmények

TXLSFillFormatA PictureFill képalapú alakzatkitöltést konfigurál, míg a FillType kiválasztja azt a kitöltéstípust (egyszínű, gradiens, kép vagy előre beállított textúra), amelyet az író kibocsát
TXLSShapesAz AddScrollBar és az AddSpinner űrlapvezérlőket hoznak létre — a visszaadott TXLSScrollBar és TXLSSpinner objektumok felfedik a vezérlő geometriáját és a kapcsolt cellát, a spinner pedig Min, Max és Inc lépés korlátokat ad hozzá — míg a RegisterScrollBar és a RegisterSpinner regisztrálja a munkafüzetből betöltött vezérlőket
TXLSWorkbookViewerA CanUndo és CanRedo jelenti a szerkesztési előzmények elérhetőségét, míg a ReferencePickMode interaktív cella- vagy tartományhivatkozás-választást tesz lehetővé

Tördelés, képkimenet és nyomtatás

TXLSGraphicsBackendA DrawTiledImage ismételten, csempézve rajzolja ki a munkalap hátterét a levágott oldalrégióra
TXLSPaginationModelA CompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorders és PaintPageBackground vezérlik az oldal tartalmát; a RenderDPI, RenderColorMode és RenderSession felfedi a kimeneti felbontást, a színkezelést és az aktív render munkamenetet
TXLSCellImageExporterA Measure pixelméreteket számol classic vagy XLSX tartományokhoz; az ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaint és PaginationModel konfigurálja és figyeli a renderelést
TXLSPageImageExporterA BeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColor és TransparentBackground ugyanazokat a rajzolási horgokat és kimeneti biztonsági korlátokat alkalmazza a tördelt képxportálásnál
TXLSPrintDocumentA PrintWorksheet, PrintWorkbook és PrintAllVisibleSheets classic vagy XLSX tartalmat küld a VCL nyomtatónak; a FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPage és OnAfterGeneratePage vezérli a nyomtatási feladatot

Classic diagrammodellek és munkalap diagramobjektumok

TXLSChartSeriesAz AddTrendline és az AddErrorBars típusos adatsor-megjegyzéseket hoznak létre, a TrendlineCount és az ErrorBarCount pedig jelenti a gyűjteményeik méretét
TXLSChartAxisA HasAxcExtFlag egy nyers AXCEXT jelzőt teszt anélkül, hogy a hívónak dekódolnia kellene a bitmaszkot
TXLSChartModelAz AxisGroupCount jelenti a diagramból dekódolt elsődleges és másodlagos tengelycsoportok számát
TXLSCustomChartAz AddAreaData előre elkészített területelemet fűz hozzá a mentéskori képlet-újrakötéshez, az ApplyDateAxisModel pedig típusos dátumtengely-modellt alkalmaz a nyers diagramrekordokra
TXLSWorksheetAz AddChartObject diagramkeretet horgonyoz egy munkalapra, és összeköti azt a megosztott diagramépítővel
TXLSXChartLayoutResolverA TryResolve egy elrendezési téglalapot old fel opcionális méretérvényesítéssel, a ResolveChart pedig kiszámítja a diagram, a cím, a jelmagyarázat, az ábraterület és a tengelyek téglalapjait

Típusos diagram-dekódolási modell

A dekódolt diagramállapot egyszerű rekordokként és enumokként érhető el, így a vizsgálókódnak soha nem kell nyers BIFF rekordokon végigmennie: a TXLSChartInfo hordozza a dekódolt diagram összefoglalóját a TXLSChartTypeFamily-vel (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), minden adatsor TXLSChartSeriesType-ot jelent, a TXLSChart3DState és a TXLSChart3DInfo pedig a háromdimenziós nézeteket írja le. A TXLSChartAxisType (catCategory, catValue, catSeries, catDate) és a TXLSChartLegendPosition osztályozza a tengelyeket és a jelmagyarázatokat, a dátumtengely-modell pedig a TXLSChartDateUnit-ot (xcduDays, xcduMonths, xcduYears) és a TXLSChartDateValues-t használja. A TXLSCustomChart a dekódolt modellt a TXLSChartInfo segítségével teszi elérhetővé; a trendvonal- és hibasáv-megjegyzések típusos objektumok (TXLSChartTrendline, TXLSChartErrorBars), amelyek minden adatsorról elérhetők

Diagramkészítési rekordok

A diagramlap- és az építőalapú diagramkészítés egyszerű rekordokat fogad objektumgráfok helyett: a TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfo és TXLSChartSeriesStyleInfo tölti ki azokat az adatsor-bejegyzéseket, amelyeket a TXLSWorksheets.AddChartSheet és a megosztott diagramépítő kap, a TXLSPivotChartInfo pedig azt a kimutatásdiagram-keretet írja le, amelyet akkor használ a rendszer, ha a diagramot kimutatástáblához csatolják

PDF-mellékletek, aláírások és HTML export

IXLSPDFAttachmentSourceA WriteTo a melléklet bájtjait streameli a PDF exportba anélkül, hogy az exportőrnek birtokolnia kellene a forrásadatokat
TXLSPDFExportAz AttachmentDuplicatePolicy választja ki a duplikált nevek kezelését, az AttachmentSpoolThreshold vezérli a mellékletek spoololását, a DocumentLanguage pedig a dokumentum nyelvi metaadatát írja
TXLSPDFSignatureA TextAlign, TextSize, TextColor, TextBold és TextItalic konfigurálja a látható aláírás megjelenését
TXLSHTMLExportA ViewMode (típus: TXLSHtmlViewMode: aktuális nézet vagy teljes táblázattábla) választja ki a HTML-bemutatást, a HotTrackTargets (TXLSHtmlHotTrackTarget halmaz) és a HotTrackColor pedig az interaktív cella- és objektumkiemelést konfigurálja
TXLSXHtmlExportOptionsA ViewMode, HotTrackTargets és HotTrackColor a megfelelő XLSX HTML export vezérlőket biztosítja

Számítási audit és munkafüzet-vezérlők

TXLSCalculationAuditReportA Truncated a problémakorlát miatti csonkolást jelzi, a StackTruncated a hívási verem kereteinek csonkolását, az Issues pedig indexeli a rögzített számítási problémákat
TXLSUserFunctionRegistryA Generation akkor változik, amikor a regisztrált felhasználói függvények halmaza változik, így a gyorsítótárazott képletkötések érvényteleníthetők
EXLSReportRecoverableDataA Category azonosítja a hívónak bemutatott, helyreállítható jelentésadat-kategóriát
IXLSWorkBookA ManualCalculationThreadCount korlátozza a kézi számítás által használt workerek számát
TXLSXDataValidationA HasUnknownImeMode olyan IME módértéket jelez, amelyet a HotXLS megőrzött, de nem ismer fel
TXLSXTableA ColumnCalculatedFormulaArrayRaw és a ColumnTotalsFormulaArrayRaw felfedi a táblaoszlopok eredeti tömbképlet-szövegét

Örökölt PivotCache keretezési kompatibilitás

TXLSPivotCacheA RawBucketIndex azonosítja a forrás-alstream pozícióját, a RawFramingIsLegacy felismeri a régi HotXLS keretezést, a RawModelIsComplete jelzi, hogy a típusos modell minden rekordot reprezentál-e, a CanUpgradeFraming pedig azt, hogy az opt-in típusos újraírás biztonságos-e
TXLSPivotCacheA StreamId felfedi a classic gyorsítótár-stream identitását, a SourceDataType a classic forrásadat típusát, a RawHasStorageStream pedig jelzi, hogy a betöltött gyorsítótár egy független PivotCache tárolóstreamből származott-e
TXLSWorkbookAz UpgradeLegacyPivotCacheFraming csak olyan örökölt HotXLS gyorsítótár-keretezések újraírását kapcsolja be, amelyek típusos modellje teljes; a sima nyers gyorsítótár-visszajátszás marad az alapértelmezés

A StreamId SXStreamID rekordként íródik ([MS-XLS] §2.4.303), és a SXDB fejléc idstm mezőjeként ismétlődik, amivel egyeznie kell; a SourceDataType SXVS rekordként íródik ([MS-XLS] §2.4.317: $0001 munkalap, $0002 külső, $0004 konszolidáció, $0010 szcenárió), és a SXDB fejléc vsType mezőjeként ismétlődik, amivel szintén egyeznie kell. A munkalap-tartományból épített gyorsítótárak a munkalap típussal indulnak, míg a fájlból visszaolvasott gyorsítótárak megtartják az alstream által hordozott értéket, így a BIFF író soha nem hagy SXDB mezőt olyan rekorddal, amelyet nem bocsátott ki; a RawHasStorageStream azt a gyorsítótárat jelöli, amely a saját tárolóstreamjéből töltődött, és amelynek munkafüzet-globális leírója megelőzi a gyorsítótárazott rekordokat

Vágólap-integráció és beillesztési opciók

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 XLSClipboardHasBiff8: Boolean;
      
A beillesztési opciókat mindkét facade PasteFromClipboard túlterhelése használja: az xlpoValuesOnly megtartja a képletcellák gyorsítótárazott értékeit, és kihagyja a formátumokat és az összevonásokat, míg az xlpoInsertRows és az xlpoInsertCols eltolja a meglévő tartalmat, mielőtt a blokk a helyére kerül
A segédek a Windows vágólapot csomagolják be táblázat-interop célra: a szöveges segédek CF_UNICODETEXT-et használnak (Fallback CF_TEXT-re az aktuális ANSI kódlapon keresztül), az XLSSetClipboardTextAndHtml egyetlen tranzakcióban ír szöveget és formázott HTML Format hasznos adatot, az XLSBuildHtmlClipboard kiszámolja a CF_HTML bájtoffsetokat dokumentumhoz vagy töredékhez, az XLSEncodeClipboardField pedig egy tabulátorral elválasztott mezőt tesz idézőjelek közé. A XLSParseClipboardGrid a vágólap szövegét tabulátorral elválasztott sorokként értelmezi ugyanazzal a típusfelismeréssel, amelyet a TXLSCSVLoader a CSV-hez használ, a Biff8 segédek pedig felderítik és beolvassák azt a natív streamet, amelyet az Excel maga helyez a vágólapra, így a beillesztett adat értékeket, képleteket és formázást őriz meg szövegveszteség nélkül

Cellamegjelenítési szöveg feloldása

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;
      
Egy közös feloldó dönti el, hogy egy cella mit mutat egy adott nézetállapotban: képleteket értékek helyett, elnyomott nullákat, rejtett képletszöveget védett munkalapokon, valamint a megduplázott szélességi faktort, amelyet az Excel a képletek megjelenítésekor alkalmaz. A munkafüzet-megjelenítő és a rendererek a megjelenítési beállítások belépési pontjain keresztül hívják, az alkalmazások pedig közvetlenül is hívhatják a XLSResolveCellDisplay-t saját bemeneti rekordjaikkal; a XLSDefaultCellDisplayOptions a kanonikus alapértelmezéseket adja vissza, a XLSNormalizeFormulaDisplayText pedig megjelenítésre normalizál egy képletsztringet

Classic adatérvényesítési objektumok

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 }
      
A típusos TXLSWorksheet.Add*Validation segédek TDVRange szabályokat hoznak létre a munkalap TDVRangeList-jében; minden szabály hordozza a TXLSDataValidationType típusát, a határait, a bemeneti és hibaüzeneteit, valamint a TXLSDvErrorStyle-t. A TDataValidator egy szerkesztést értékel ki a szabályok szerint, és jelzi, hogy az érték elfogadható-e — ez az ellenőrzés áll az Excel saját érvényesítési felszólításai mögött is

Indexelt színek pásztázása és feloldása

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);
      
Ezek a rekordok támasztják alá a munkafüzet szintű ResolveIndexedColor, NearestIndexedColor és ScanIndexedColorUsage metódusokat: egy feloldás jelenti, hogy az indexelt token a négy TXLSIndexedColorKind forrás melyikéből származik, együtt a palettahelyével, a rendszerszín-szerepével és a normalizált ARGB-jével; a legközelebbi egyezés hozzáadja a négyzetes RGB távolságot és az egzakt egyezés jelzőjét, a használatpásztázás pedig felcímkéz minden fogyasztói kategóriát, amely palettahelyet foglal le. A könyvtár belső TXLSIndexedColorMatcher gyorsítótárat tart a palettageneráció kulcsával — a FindNearest ebből válaszolja meg a legközelebbi szín lekérdezéseit, az UpdateSlot egy palettahelyet javít — így az ismételt feloldások allokációmentesek maradnak

A1 hivatkozási segédek

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;
      
Önálló segédek ugyanarra az A1 jelölésre, amelyet a munkafüzet API-jai elfogadnak: a nulla alapú koordinátákat A1 cellahivatkozásként formázzák, és visszafejtik a cella- vagy tartományhivatkozásokat, hibás bemenet esetén False értékkel térnek vissza kivétel dobása helyett

Lásd még