Dokumentace HotXLS

Další členy knihovního API

Tato stránka doplňuje referenci veřejných typů, které podporují primární API sešitů, listů, vykreslování, importu, diagnostiky a prohlížeče, ale nevyžadují samostatného průvodce zaměřeného na konkrétní úlohu

Filtrování a podmíněné formátování

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clear a ParseAutofilterData upravují nebo importují definici filtru; Defined, FirstRow, FirstCol, LastCol, LastRow a FieldCount zpřístupňují jeho aktivní meze a počet filtrovaných sloupců
TXLSAutofilterItemShape zpřístupňuje kreslení tlačítka filtru přidruženého k položce a načtené kritérium filtru je dostupné jako operandní record TXLSAutofilterDOPER — DataType volí formu operandu a grbitSgn nese bity znaménka a příznaků — k inspekci nebo roundtrip editaci
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTint a ClearAxisThemeColor řídí osu; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositive a NegativeBorderColor řídí vzhled lišty; IsIndexedColor, IndexedColorIndex a ClearIndexedColor spravují barvu lišty jako index palety
TXLSIconSetSpecThresholdEqualsInclude volí včetné nebo výlučné porovnání pro každý práh sady ikon
TXLSCfValueIsIndexedColor a IndexedColorIndex hlásí prahovou barvu uloženou jako starší index palety, ClearIndexedColor tuto formu opět odstraní a barvy motivů nebo přímé barvy zůstávají dostupné prostřednictvím stávajících přístupových metod

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpec a TXLSDxfStyle přijímají AttachWriteGuardOwner, jenž propojí objekt pravidla s jeho vlastnícím sešitem, takže úpravy automaticky získají hlídač zápisu; vlastník implementuje TXLSCondFormatWriteGuardOwner, jehož jediná metoda AcquireWriteGuard předá pravidlu hlídač zápisu sešitu. TXLSDxfStyle přidává FontColorIndex s FontColorIsIndexed a dvojice FillFgColorIndex / FillFgColorIsIndexed a FillBgColorIndex / FillBgColorIsIndexed pro barvy pravidel jako index palety, a navíc přepisy diferenciálního písma FontName, FontSize a FontScheme (prázdný řetězec, velikost v bodech, nebo slot písma motivu jako major / minor) vedle stávajících členů pro tučné, kurzívu, podtržení a barvu; každé přiřazení získá hlídač zápisu a označí pravidlo jako dirty pro opětovné vygenerování

TXLSConnections, TXLSDataTables a TXLSQueryTables zpřístupňují OnAcquireWriteGuard (typy TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuard a TXLSQueryTableAcquireWriteGuard), háček, kterým jejich editační cesty před mutací získávají IXLSWorkbookWriteGuard vlastnícího sešitu a poté posouvají generaci sešitu; hlídač si zaznamenává StartGeneration a Complete označí zápis za dokončený, takže se mohou přestavět závislé mezipaměti

Zachovaná datová připojení nesou typovaný popis: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) klasifikuje připojení, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) zaznamenává jeho režim ověřování a každá hodnota parametru připojení je označena TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). Datové tabulky what-if hlásí svůj uložený druh definice přes TXLSDataTableKind

Datové tabulky what-if a seskupování kontingenčních tabulek

TXLSDataTableAssign, ContainsCell a IsRoot kopírují a prohlížejí tabulku; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRow a RowInputDeleted zpřístupňují uloženou definici výpočtu
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShift a Offset spravují kolekci; FindByCell a FindRoot vyhledají tabulku obsahující danou buňku nebo z ní kořeněnou; Count, Items a OnChange zpřístupňují stav kolekce
TXLSPivotCacheFieldGroupBaseField a GroupParentField zpřístupňují vztahy mezi seskupeným polem a jeho zdrojovým nebo nadřazeným polem

Práhy sad ikon lze programově vykreslit nebo validovat: XLSCfIconSetCount hlásí, kolik ikon definuje TXLSIconSetType, a XLSBuildCfIconGeometry naplní TXLSCfIconGeometry primitivami (TXLSCfIconPrimitive, druh TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) a body (TXLSCfIconPoint), které jednu ikonu vykreslí, takže vlastní renderery odpovídají vestavěným tvarům ikon Excelu

Diagnostika, trasování vzorců a validace

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName a StreamOffset identifikují jednu diagnostiku analyzátoru, zapisovače nebo balíčku
TXLSDiagnosticsAdd přidá diagnostiku, Clear resetuje kolekci a Count spolu s Items vyčíslují její položky
TXLSDiagnosticSeverity a TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) klasifikuje jednu diagnostiku a TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) pojmenovává fázi, která ji vyprodukovala; handlery OnDiagnostic si oba přečtou z doručeného TXLSDiagnostic
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCount a StepCount zpřístupňují aktuální snímek ladicího programu a velikosti jeho trasování
TXLSFormulaTracerStepCount hlásí počet zaznamenaných kroků vyhodnocení
TXLSImportCheckAddRule, Annotate, KeepOnlyViolations a Violation konfigurují a spouštějí validaci importu; HeaderRow, FirstRow, LastRow, OnVerifyCell a ViolationCount zpřístupňují jeho meze, zpětné volání a počet výsledků. Pravidla jsou objekty TlxImportColumnRule, jejichž TlxImportRuleFlags volí kontroly pro jeden sloupec listu s číslováním od jedničky, a každý TlxImportViolation hlásí řádek, sloupec, problematický text a chybovou zprávu
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
Oba enginy ve výchozím stavu ukládají kešované hodnoty a používají xluPromptUser; xluNever a xluAlways mění pouze předvolbu aktualizace uloženou v sešitu a nikdy neautorizují ani neinicializují přístup k externím souborům nebo síti

Audit výpočtů a nápovědné vlastnosti sešitu

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 spojí selhání symbolů vzorců a nesoulady kešovaných hodnot do stabilních strukturovaných kategorií se souřadnicemi listu, vzorci, symboly, očekávanými a skutečnými hodnotami a ohraničeným zkracováním, přičemž mezipaměti i sémantiku sešitu ponechá beze změny. RecalcAndVerifyEx spustí hloubkový audit: každý vzorec jednou vyhodnotí přes graf závislostí do izolovaného překryvu výsledků, takže závislé buňky čtou tento průchod místo zastaralých mezipamětí, klasifikuje selhání vyhodnocení (nepodporované argumenty, kruhové odkazy, zamítnuté nebo chybějící externí odkazy, přeskočené datové tabulky, zrušení, interní selhání) s kódy výsledků, zaznamená ohraničený zásobník volání pro každé selhání, respektuje rozpočet problémů i sink pro průběh a zrušení a zůstává jen pro čtení, dokud ApplyResults atomicky nepotvrdí přepočítané hodnoty po zcela úspěšném průchodu nad nezměněnou strukturou sešitu
Každý prvek TXLSCalculationAuditReport.Issues je TXLSCalculationAuditIssue; Kind volí jednu z kategorií xlcai*, Expected / Actual nesou porovnávané hodnoty u nesouladů mezipaměti, Stack je ohraničený řetězec volání vyhodnocení zobrazovaný jako Sheet!A1 > Sheet!B2 (nejvzdálenější rámec jako první) a ExternalTarget popisuje externí sešit u problémů s externími odkazy. TXLSRecalcAuditOptions.OnProgress je sink TXLSRecalcAuditProgress, který přijímá postup uzlů v ACurrent / ATotal a může nastavit ACancel, čímž zastaví audit na hranici dalšího uzlu s jediným problémem xlcaiCancelled
RunCalculationAudit je vstupní bod enginu, kterému se delegují obálky auditu na úrovni sešitu, a přijímá tentýž záznam voleb. FormulaIsVolatile hlásí, zda vzorec vynutí přepočet v každém průchodu (volání jako NOW, RAND, TODAY, OFFSET, INDIRECT nebo nevyřešitelný odkaz)
Auditový překryv je vrstva what-if nad mezipaměťmi buněk: AuditOverlayWrite uloží náhradní hodnotu pro jednu buňku (index listu od jedničky, řádek a sloupec od nuly podle konvence kalkulátoru), AuditOverlayRead a AuditOverlayHash se na ni dotazují a AuditOverlayClear vrstvu vyprázdní. Překryté hodnoty vrací běžné gettery hodnot buněk, takže přepočet i hloubkový audit je vidí bez mutace buněk listu; vymazání překryvu obnoví uložené hodnoty
Nápovědné vlastnosti sešitu zachovávají stavy chybí, false, true, disabled, automatic a manual tam, kde je zdrojový formát podporuje; při otevření nikdy nespustí výpočet, obnovení, práci se souborovým systémem, sítí ani databází

Stav tabulkových vzorců a IME

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Vzorce počítaných sloupců a řádků souhrnů si vedou nezávislé stavy pole chybí, false, true nebo unknown, včetně nedotčených lexikálních hodnot zdroje a strukturálních úprav sloupců; maticové vzorce se při skalárním rozšiřování řádků odmítnou místo tiché změny
Režimy IME používají explicitní mapování BIFF a OOXML, zachovávají neznámé zdrojové hodnoty a odmítnou hodnotu disabled dostupnou jen v OOXML, když je zamýšlena pro Classic XLS
Nastavení SaveExternalLinkValues na False vynechá classic záznamy XCT a CRN nebo podstrom sheetDataSet externího sešitu XLSX, přičemž zachová cíle odkazů, názvy listů, externí definované názvy, relace, odkazy ve vzorcích, neznámé XML a mezipaměť v paměti; obnovení vlastnosti na True u téhož sešitu může tuto zachovanou mezipaměť znovu serializovat
Nedotčené nepodporované zdrojové tokeny zůstávají zachovány po bytech nebo lexikálně, explicitní přiřazení vysílají pouze legální hodnoty, nezměněné části XLSX udržují cestu kopírování v komprimované podobě a konverze XLS/XLSX přenáší obě politiky; sešity ODS a text nemají ekvivalentní deklaraci a otevírají se s výchozími hodnotami, zatímco zachované části odkazů DDE a OLE nejsou považovány za buněčné mezipaměti externího sešitu

Inspekce a odstranění podoken úloh doplňků webu

function IXLSWorkbook.HasWebAddinTaskPanes: Boolean;
function IXLSWorkbook.WebAddinTaskPaneCount: Integer;
function IXLSWorkbook.RemoveWebAddinTaskPanes: Integer;
function TXLSXWorkbook.HasWebAddinTaskPanes: Boolean;
function TXLSXWorkbook.WebAddinTaskPaneCount: Integer;
function TXLSXWorkbook.RemoveWebAddinTaskPanes: Integer;
      
Inspekční metody rozpoznávají pouze interní relace od kořene balíčku, jejichž typ přesně odpovídá typu relace podoken úloh doplňků webu; externí relace, typy lišící se velikostí písmen, relace listů a podobně pojmenované části se ignorují
Odstranění nejprve zvaliduje kompletní graf relací, včetně normalizovaných cílů, omezení na kořen balíčku, cyklů, chybějících částí a limitů prostředků; poté odstraní všechny odpovídající kořenové relace a pouze dosažitelné části nesdílené jinou zachovanou relací, spolu s částmi relací vlastněnými odstraněnými zdroji
Operace je atomická a idempotentní, odstraněné zdrojové části se nemohou znovu objevit ukládáním v komprimované podobě a typy obsahu se přestaví ze zbylého balíčku; poškozené grafy přidají diagnostický kód 1303 a vyvolají výjimku před mutací, zatímco Classic XLS a ODS vrátí False, 0 a -1 bez prohledání balíčku

Politika zobrazování objektů sešitu

TXLSObjectDisplayMode = (xlsodmShowAll, xlsodmShowPlaceholders,
  xlsodmHideAll);

property IXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSXWorkbook.ObjectDisplayMode: TXLSObjectDisplayMode;
property TXLSPaginationModel.ExportObjectPlaceholders: Boolean;
property TXLSPDFExport.ExportObjectPlaceholders: Boolean;
property TXLSSvgExport.ExportObjectPlaceholders: Boolean;
property TXLSPageImageExporter.ExportObjectPlaceholders: Boolean;
property TXLSPrintDocument.ExportObjectPlaceholders: Boolean;
property TXLSXHtmlExportOptions.ExportObjectPlaceholders: Boolean;
      
Classic XLS mapuje tři stavy do svého záznamu zobrazování objektů sešitu a XLSX je mapuje do workbookPr.showObjects; chybějící hodnoty se výchozí do xlsodmShowAll, nedotčené rezervované payloady Classic a nepodporované tokeny XLSX zůstávají zachovány beze ztráty a explicitní přiřazení vysílají jen kanonické hodnoty
Prohlížeč vykreslí režim placeholderů jako lehké rámečky nesoucí dostupný typ objektu, název, text a alternativní text; exportéři ve výchozím stavu ponechávají plné objekty, zatímco nastavení ExportObjectPlaceholders vyžádá tutéž nízkonákladovou politiku bez dekódování obrazových payloadů a bez stavění scén grafů
xlsodmHideAll zamezí sběru kreslení a rozšiřování oblastí řízenému objekty, dokud vykreslování nezačne; konverze sešitu přenáší všechny tři stavy, ODS pro režim placeholderů zapisuje kompletní kreslení a pro režim hide-all vynechává výstup kreslení a médií a pozadí listů zůstávají nezávislá

Kalibrační hodnoty a snímky vykreslování

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;
      
Výchozí hodnoty jsou 1, 1, 1, 1, 100 a 96; korekce šířky a výšky musí být větší než nula a menší než dvě, řádkování je omezeno na (0, 4], okraje buněk na [0, 4], škálování obrazovky na [100, 500] procent a měřicí DPI na [36, 2400]
Sešity Classic XLS a XLSX zpřístupňují stejné členy RenderCalibration, CaptureRenderCalibration a ResetRenderCalibration; přiřazení celého záznamu se validuje před mutací a každé zachycení vrací nezávislý snímek hodnot neměnný podle konvence pro jednu operaci vykreslení

Geometrie vykreslování a měření písma

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 vlastní jednu neměnnou kalibraci, generaci sešitu, identitu backendu, měřicí plochu GDI a ohraničenou metrickou mezipaměť lokální pro operaci; MeasureText vrací šířku a výšku v pixelech, výšku řádku, vzestup, sestup a počet řádků, zatímco MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPoints a UsableCellWidthPixels poskytují sdílené geometrické převody
Identita mezipaměti zahrnuje backend, generaci sešitu, všechny kalibrační hodnoty, název písma, přesnou velikost, styly, znakovou sadu, šířku zalamování a text; korekce šířky a výšky se aplikují jednou při měření textu, řádkování ovlivňuje pouze výšku více řádků, korekce okrajů buněk pouze využitelnou šířku textu a škálování obrazovky pouze emulaci maximální šířky číslice pro implicitní šířky sloupců
Automatické přizpůsobení Classic XLS a XLSX zachytí jednu službu pro každou veřejnou operaci, včetně měření sloučených rozsahů a dvoufázového MarkSheet, zatímco TXLSPaginationModel.Build zachytí jednu službu pro vybraný RenderBackend; vstupní body PDF, SVG, bitmap, náhledu tisku, prohlížeče sešitů a HTML si před výstupem vybírají vlastní backend, změna kalibrace sešitu nemůže mutovat existující snímek a výstup nezapisuje rozměry listu
Přímá HTML volání sešitu, listu a rozsahu zachytávají čerstvou službu xlsrgbHtml, zatímco přírůstkové TXLSXHtmlExportSession zachytí jednou v BeginExport a tento snímek znovu používá pro všechny listy; oba exportéři zpřístupňují uchovanou službu prostřednictvím RenderGeometry pro diagnostiku kalibrace a mezipaměti
Vlastnosti IXLSRenderGeometry jen pro čtení WorkbookGeneration, CacheCapacity a CacheEntryCount pro diagnostiku hlásí vázanou generaci a naplnění mezipaměti a ImplicitWidthMaximumDigitWidthPixels vrací měření šířky číslice stojící za emulací implicitních šířek sloupců
MeasureText naplní record TXLSRenderTextMetrics (šířka a výška v pixelech, výška řádku, vzestup, sestup a počet řádků) z TXLSRenderFont, jehož člen Styles je množina příznaků TXLSRenderFontStyle (bold, italic, underline, strikethrough)

Import, generování kódu, porovnávání a monitorování

TXLSHTMLImportPřetížení LoadFromHTML importují obsah tabulky HTML ze streamu nebo souboru do listu, s volitelnými počátečními souřadnicemi, výběrem tabulky a desetinným oddělovačem
TXLSCodeGenLanguage (typ TlxCodeGenLanguage: lcgDelphi nebo lcgCppBuilder) volí zdrojový dialekt generovaných příkazů, GenerateToList zapisuje vygenerovaný kód sešitu do seznamu řetězců a TlxCodeGenOptions rozšiřuje výstup o sloučené oblasti, šířky sloupců nebo formáty čísel (cgoMerges, cgoColumnWidths, cgoNumberFormats; listy a buňky se vysílají vždy)
TXLSXWorkbookCompareLeftName a RightName pojmenovávají vstupy, Compare provede porovnání a Diff zpřístupní výsledné položky TlxCompareDiff klasifikované podle TlxCompareKind
TXLSFileMonitorIntervalMs volí interval dotazování a SynchronizeEvent volí synchronizované doručování zpětných volání; handler OnFileChanged může monitor deaktivovat nebo zničit, případně změnit FileName a začít sledovat jiný soubor
TXLSCSVLoader a TXLSCSVSaverLoader parsuje text oddělený oddělovači do mřížky Variantů v paměti — ParseFile a ParseStream mřížku naplní, CellValue, RowCount a ColCount ji přečtou zpět — s automaticky rozpoznaným oddělovačem (ValueSeparator) a kódováním (TXLSCsvEncoding: systémové ANSI, UTF-16, UTF-8) a volitelným zvyšováním typů řízeným přes DetectTypes a položky ColumnTypes pro jednotlivé sloupce (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbers a FieldWidths doladí práci s pevnou šířkou polí a locale. TXLSCSVSaver.SaveAs mřížku zapíše zpět s uvozováním podle RFC 4180 a QuoteAllStrings uvozování vynutí; TXLSTSVSaver je od saveru odvozen pro výstup oddělený tabulátory

Pomocníci pro balíčky a binární úložiště

TXLSXOpaquePackageLoadWorkbookXmlMetadata zachytává stav XML na úrovni sešitu, MarkAllPartsClean resetuje příznaky neaktuálnosti a WorkbookExtLstXml spolu s WorkbookRootAttributesXml zpřístupňují zachované fragmenty XML sešitu; IsDiscardedPart hlásí, zda byl název části odstraněn operací vyřazení, například úklidem doplňků webu
TXLSFileStorageLoad, LoadFolder, Write a WriteFolder přenášejí obsah složeného souboru; Child a Count vyčíslují podřízené položky, každá je TXLSFileItem — pojmenovaný uzel úložiště, jehož podtřída TXLSFileStream nese uložené bajty jako TXLSBlob a DataSize hlásí délku payloadu
TXLSBlobAdd připojuje další blob, zatímco AddByte, AddWord, AddLong, AddDouble, AddString a AddWideString připojují typované hodnoty; CopyData, CopyMem, FillByte, Write, Clear, Reset a Dump spravují obsah; Buff a DataLength zpřístupňují úložiště
TXLSBlobListAppend, AppendList, CopyData a Write kombinují nebo vysílají položky; Entries a TotalSize zpřístupňují stav seznamu
TXLSWideStringBuilderAddString připojuje text a Length hlásí nahromaděný počet znaků

Rozšíření pro kreslení a prohlížeč sešitů

TXLSFillFormatPictureFill konfiguruje výplň tvaru založenou na obrázku, zatímco FillType volí druh výplně (plná, přechodová, obrázková nebo přednastavená textura), který zapisovač vysílá
TXLSShapesAddScrollBar a AddSpinner vytvářejí ovládací prvky formuláře — vrácené objekty TXLSScrollBar a TXLSSpinner zpřístupňují geometrii prvku a propojenou buňku a spinner přidává limity kroku Min, Max a Inc — zatímco RegisterScrollBar a RegisterSpinner registrují prvky načtené ze sešitu
TXLSWorkbookViewerCanUndo a CanRedo hlásí dostupnost historie úprav, zatímco ReferencePickMode umožňuje interaktivní výběr odkazu na buňku nebo rozsah

Stránkování, výstup obrázků a tisk

TXLSGraphicsBackendDrawTiledImage opakovaně vykreslí pozadí listu přes oříznutou oblast stránky
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorders a PaintPageBackground řídí obsah stránky; RenderDPI, RenderColorMode a RenderSession zpřístupňují výstupní rozlišení, práci s barvami a aktivní render relaci
TXLSCellImageExporterMeasure spočítá rozměry v pixelech pro oblasti classic nebo XLSX; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaint a PaginationModel konfigurují a sledují vykreslení
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColor a TransparentBackground aplikují stejné paint háčky a bezpečné limity výstupu na stránkovaný export obrázků
TXLSPrintDocumentPrintWorksheet, PrintWorkbook a PrintAllVisibleSheets pošlou obsah classic nebo XLSX tiskárně VCL; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPage a OnAfterGeneratePage řídí tiskovou úlohu

Modely grafů Classic a grafové objekty listu

TXLSChartSeriesAddTrendline a AddErrorBars vytvoří typované anotace řady, zatímco TrendlineCount a ErrorBarCount hlásí velikosti těchto kolekcí
TXLSChartAxisHasAxcExtFlag otestuje jeden surový příznak AXCEXT, aniž by od volajícího vyžadovala dekódování bitové masky
TXLSChartModelAxisGroupCount hlásí počet primárních a sekundárních skupin os dekódovaných z grafu
TXLSCustomChartAddAreaData přidá předpřipravenou položku plošného typu pro znovupřipojení vzorců při ukládání a ApplyDateAxisModel aplikuje typovaný model datové osy na surové záznamy grafu
TXLSWorksheetAddChartObject ukotví rámec grafu na list a propojí ho se sdíleným builderem grafů
TXLSXChartLayoutResolverTryResolve vyřeší jeden obdélník rozložení s volitelnou validací velikosti a ResolveChart spočítá obdélníky grafu, titulku, legendy, plochy vykreslení a os

Typovaný dekódovaný model grafu

Dekódovaný stav grafu je zpřístupněn jako prosté records a enumy, takže inspekční kód nikdy nemusí procházet surové záznamy BIFF: TXLSChartInfo nese souhrn dekódovaného grafu s TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), každá řada hlásí TXLSChartSeriesType a TXLSChart3DState spolu s TXLSChart3DInfo popisují trojrozměrná zobrazení. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) a TXLSChartLegendPosition klasifikují osy a legendy, model datové osy používá TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) a TXLSChartDateValues. TXLSCustomChart zpřístupňuje dekódovaný model přes TXLSChartInfo; anotace trendline a chybových úseček jsou typované objekty (TXLSChartTrendline, TXLSChartErrorBars) dosažitelné z každé řady

Záznamy pro tvorbu grafů

Tvorba grafových listů a builderů přijímá prosté records místo objektových grafů: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfo a TXLSChartSeriesStyleInfo naplní položky řad předávané do TXLSWorksheets.AddChartSheet a sdíleného builderu grafů a TXLSPivotChartInfo popisuje rámec kontingenčního grafu použitý, když se graf připojuje ke kontingenční tabulce

Přílohy PDF, podpisy a export HTML

IXLSPDFAttachmentSourceWriteTo streamuje bajty přílohy do exportu PDF, aniž by exportér musel vlastnit zdrojová data
TXLSPDFExportAttachmentDuplicatePolicy volí zacházení s duplicitními názvy, AttachmentSpoolThreshold řídí spooling příloh a DocumentLanguage zapisuje metadata jazyka dokumentu
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBold a TextItalic konfigurují viditelný vzhled podpisu
TXLSHTMLExportViewMode (typ TXLSHtmlViewMode: aktuální zobrazení nebo celá tabulka sešitu) volí HTML prezentaci, zatímco HotTrackTargets (množina TXLSHtmlHotTrackTarget) a HotTrackColor konfigurují interaktivní zvýrazňování buněk a objektů
TXLSXHtmlExportOptionsViewMode, HotTrackTargets a HotTrackColor poskytují ekvivalentní ovládání HTML exportu XLSX

Audit výpočtů a ovládací prvky sešitu

TXLSCalculationAuditReportTruncated hlásí zkrácení kvůli limitu problémů, StackTruncated hlásí zkrácení rámců zásobníku volání a Issues indexuje zaznamenané problémy výpočtu
TXLSUserFunctionRegistryGeneration se změní vždy, když se změní zaregistrovaná sada uživatelských funkcí, což umožní zneplatnit kešované vazby vzorců
EXLSReportRecoverableDataCategory identifikuje kategorii obnovitelných dat reportu předloženou volajícímu
IXLSWorkBookManualCalculationThreadCount omezuje počet vláken používaných manuálním výpočtem
TXLSXDataValidationHasUnknownImeMode hlásí hodnotu režimu IME, kterou HotXLS zachoval, ale nerozpozná
TXLSXTableColumnCalculatedFormulaArrayRaw a ColumnTotalsFormulaArrayRaw zpřístupňují původní text maticových vzorců pro sloupce tabulky

Kompatibilita zastaralého rámování PivotCache

TXLSPivotCacheRawBucketIndex identifikuje pozici zdrojového substreamu, RawFramingIsLegacy identifikuje staré rámování HotXLS, RawModelIsComplete hlásí, zda typovaný model pokrývá každý záznam, a CanUpgradeFraming hlásí, zda je opt-in přepis do typované podoby bezpečný
TXLSPivotCacheStreamId zpřístupňuje identitu streamu classic mezipaměti, SourceDataType zpřístupňuje typ classic zdrojových dat a RawHasStorageStream hlásí, zda načtená mezipaměť pocházela z nezávislého storage streamu PivotCache
TXLSWorkbookUpgradeLegacyPivotCacheFraming se opt-in týká jen přepisu zastaralých rámování mezipaměti HotXLS, jejichž typovaný model je kompletní; běžné přehrání surové mezipaměti zůstává výchozí

StreamId se zapisuje jako záznam SXStreamID ([MS-XLS] §2.4.303) a opakuje se jako pole idstm v hlavičce SXDB, které se musí rovnat; SourceDataType se zapisuje jako záznam SXVS ([MS-XLS] §2.4.317: $0001 list, $0002 externí, $0004 konsolidace, $0010 scénář) a opakuje se jako pole vsType v hlavičce SXDB, které se musí rovnat. Mezipaměti postavené z oblasti listu začínají typem listu, zatímco mezipaměti načtené zpět ze souboru si ponechají hodnotu, kterou nesl jejich substream, takže zapisovač BIFF nikdy neuvádí v poli SXDB záznam, který nevyslal; RawHasStorageStream označuje mezipaměť načtenou z vlastního storage streamu, jejíž deskriptor na úrovni celého sešitu předchází kešovaným záznamům

Integrace schránky a možnosti vložení

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;
      
Možnosti vložení sdílejí přetížení PasteFromClipboard obou fasád: xlpoValuesOnly ponechá kešované hodnoty buněk se vzorci a přeskočí formáty a sloučené oblasti, zatímco xlpoInsertRows a xlpoInsertCols posunou stávající obsah, než se blok uloží
Pomocníci obalují Windows schránku pro spreadsheet interop: textoví pomocníci používají CF_UNICODETEXT (s fallbackem na CF_TEXT přes aktuální ANSI kódovou stránku), XLSSetClipboardTextAndHtml zapíše text a stylizovaný payload HTML Format v jedné transakci, XLSBuildHtmlClipboard spočítá bajtové ofsety CF_HTML pro dokument nebo fragment a XLSEncodeClipboardField uvozí jedno pole oddělené tabulátory. XLSParseClipboardGrid parsuje text schránky jako řádky oddělené tabulátory se stejným odhadem typů, jaký TXLSCSVLoader používá pro CSV, a pomocníci Biff8 rozpoznají a přečtou nativní stream, který na schránku ukládá samotný Excel, takže vložená data zachovají hodnoty, vzorce i formátování bez ztráty textu

Řešení zobrazovaného textu buňky

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;
      
Jeden sdílený resolver rozhoduje, co buňka zobrazí pro daný stav zobrazení: vzorce místo hodnot, potlačené nuly, skrytý text vzorců na chráněných listech a zdvojnásobený šířkový faktor, který Excel aplikuje na zobrazení vzorců. Prohlížeč sešitů i renderery ho volají přes své vstupní body pro možnosti zobrazení a aplikace mohou volat XLSResolveCellDisplay přímo s vlastními vstupními records; XLSDefaultCellDisplayOptions vrátí kanonické výchozí hodnoty a XLSNormalizeFormulaDisplayText normalizuje řetězec vzorce pro zobrazení

Objekty ověřování dat Classic

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 }
      
Typovaní pomocníci TXLSWorksheet.Add*Validation vytvářejí pravidla TDVRange v TDVRangeList listu; každé pravidlo nese svůj TXLSDataValidationType, meze, vstupní a chybové zprávy a TXLSDvErrorStyle. TDataValidator vyhodnotí editaci proti pravidlům a hlásí, zda je hodnota přijatelná — to je i kontrola stojící za vlastními výzvami ověřování Excelu

Skenování a řešení indexovaných barev

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);
      
Tyto records podkládají metody na úrovni sešitu ResolveIndexedColor, NearestIndexedColor a ScanIndexedColorUsage: rozlišení hlásí, ze kterého ze čtyř zdrojů TXLSIndexedColorKind indexovaný token pochází, spolu s jeho slotem palety, rolí systémové barvy a normalizovaným ARGB; nejbližší shoda přidává kvadratickou RGB vzdálenost a příznak přesné shody; a sken použití označí každou kategorii konzumenta, která si zamkne slot palety. Knihovna si drží interní mezipaměť TXLSIndexedColorMatcher klíčovanou generací palety — FindNearest z ní odpovídá na dotazy nejbližší barvy a UpdateSlot opraví jeden slot palety — takže opakovaná rozlišení zůstávají bez alokací

Pomocníci pro odkazy A1

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;
      
Samostatní pomocníci pro stejnou notaci A1, kterou přijímají API sešitu: naformátují souřadnice od nuly jako odkaz na buňku A1 a parsují odkazy na buňky nebo oblasti zpět, přičemž u poškozeného vstupu vrátí False místo vyvolání výjimky

Viz také