Документация на HotXLS

Допълнителни членове на API на библиотеката

Тази страница завършва справочника за публичните типове, които подпомагат основните API за работни книги, листове, рендиране, импортиране, диагностика и преглед, но не изискват отделно ръководство по конкретна задача

Филтриране и условно форматиране

TXLSAutofilterAdd, AddAutofilterData, AssignFrom, Clear и ParseAutofilterData редактират или импортират дефиницията на филтъра; Defined, FirstRow, FirstCol, LastCol, LastRow и FieldCount разкриват активните ѝ граници и броя на филтрираните колони
TXLSAutofilterItemShape разкрива рисунката на бутончето за филтриране, свързана с позицията, а зареденият критерий на филтъра е достъпен като запис-операнд TXLSAutofilterDOPER — DataType избира формата на операнда, а grbitSgn носи знаковия и флаговите битове — за инспекция или Roundtrip редакция
TXLSDataBarSpecAxisColor, AxisIsThemeColor, AxisThemeColorId, AxisThemeColorTint и ClearAxisThemeColor управляват оста; Direction, GradientFill, NegativeBarBorderColorSameAsPositive, NegativeBarColor, NegativeBarColorSameAsPositive и NegativeBorderColor управляват външния вид на лентите; IsIndexedColor, IndexedColorIndex и ClearIndexedColor управляват цвета на лентата като индекс в палитрата
TXLSIconSetSpecThresholdEqualsInclude избира включващо или изключващо сравнение за всеки праг на значка
TXLSCfValueIsIndexedColor и IndexedColorIndex докладват цвят на праг, съхраняван като наследен индекс в палитрата, ClearIndexedColor премахва отново тази форма, а тематичните и буквалните цветове остават достъпни чрез съществуващите аксесоари

TXLSCfValue, TXLSDataBarSpec, TXLSColorScaleSpec, TXLSIconSetSpec и TXLSDxfStyle приемат AttachWriteGuardOwner, свързвайки обекта на правилото със собствената му работна книга, така че редакциите автоматично придобиват защита при запис; притежателят имплементира TXLSCondFormatWriteGuardOwner, чийто единствен метод AcquireWriteGuard предава на правилото защитата при запис на работната книга. TXLSDxfStyle добавя FontColorIndex с FontColorIsIndexed, както и двойките FillFgColorIndex / FillFgColorIsIndexed и FillBgColorIndex / FillBgColorIsIndexed за цветове на правилата като индекси в палитрата, плюс презаписванията на шрифта в диференциалното форматиране FontName, FontSize и FontScheme (празен низ, размер в точки или слот за шрифт на темата като major / minor) редом до съществуващите членове за получер, курсив, подчертаване и цвят; всяко задаване придобива защитата при запис и маркира правилото като променено за повторно излъчване

TXLSConnections, TXLSDataTables и TXLSQueryTables разкриват OnAcquireWriteGuard (типове TXLSConnectionAcquireWriteGuard, TXLSDataTableAcquireWriteGuard и TXLSQueryTableAcquireWriteGuard) — куката, която пътищата им за редактиране използват, за да получат IXLSWorkbookWriteGuard на притежаващата работна книга преди мутация и да отместят генерацията на работната книга след нея; защитата записва StartGeneration, а Complete отбелязва записа като завършен, така че зависимите кешове да могат да се престроят

Запазените връзки с данни носят типизирано описание: TXLSConnectionKind (xlckUnknown, xlckOdbc, xlckDao, xlckFile, xlckWeb, xlckOleDb, xlckText, xlckAdo) класифицира връзката, TXLSConnectionCredentials (xlccIntegrated, xlccNone, xlccStored, xlccPrompt) записва нейния режим на автентикация, а всяка стойност на параметър на връзка е етикетирана с TXLSConnectionParameterValueKind (xlcpvNone, xlcpvBoolean, xlcpvDouble, xlcpvInteger, xlcpvString, xlcpvCell). Таблиците с данни „what-if“ докладват своя съхранен вид дефиниция чрез TXLSDataTableKind

Таблици с данни „what-if“ и групиране в обобщени таблици

TXLSDataTableAssign, ContainsCell и IsRoot копират и инспектират таблица; Kind, FirstRow, FirstCol, LastCol, LastRow, AlwaysCalculate, ColumnInputCol, ColumnInputRow, ColumnInputDeleted, RowInputCol, RowInputRow и RowInputDeleted разкриват съхранената дефиниция за изчисление
TXLSDataTablesAdd, AddExisting, Delete, Clear, Assign, AdjustForShift и Offset поддържат колекцията; FindByCell и FindRoot откриват таблицата, съдържаща дадена клетка или кореняща в нея; Count, Items и OnChange разкриват състоянието на колекцията
TXLSPivotCacheFieldGroupBaseField и GroupParentField разкриват връзките между групирано поле и неговото изходно или родителско поле

Праговете на наборите от значки могат да се рендерират или валидират програмно: XLSCfIconSetCount докладва колко значки дефинира даден TXLSIconSetType, а XLSBuildCfIconGeometry запълва TXLSCfIconGeometry с примитивите (TXLSCfIconPrimitive, вид TXLSCfIconPrimitiveKind: cfipPolygon, cfipEllipse, cfipRect, cfipLine) и точките (TXLSCfIconPoint), които рисуват една значка, така че потребителските рендери да съвпадат с вградените форми на значки на Excel

Диагностика, проследяване на формули и валидация

TXLSDiagnosticCode, NativeCode, Message, Severity, ExceptionClass, PartName, RecordId, SheetIndex, SheetName и StreamOffset идентифицират една диагностична ситуация от синтактичния анализ, записа или пакета
TXLSDiagnosticsAdd добавя диагностична ситуация, Clear нулира колекцията, а Count заедно с Items изброява нейните записи
TXLSDiagnosticSeverity и TXLSDiagnosticOperationTXLSDiagnosticSeverity (xlsDiagnosticInfo, xlsDiagnosticWarning, xlsDiagnosticError, xlsDiagnosticFatal) класифицира една диагностична ситуация, а TXLSDiagnosticOperation (xlsOperationNone, xlsOperationOpen, xlsOperationSave, xlsOperationCalculate, xlsOperationExport) назовава фазата, ядала я; обработчиците на OnDiagnostic четат и двете от доставената TXLSDiagnostic
TXLSFormulaDebugSessionCurrentStep, DependencyCount, NodeCount и StepCount разкриват текущата моментна снимка на дебъгера и размерите на нейното проследяване
TXLSFormulaTracerStepCount докладва броя на записаните стъпки от изчислението
TXLSImportCheckAddRule, Annotate, KeepOnlyViolations и Violation конфигурират и изпълняват валидация при импортиране; HeaderRow, FirstRow, LastRow, OnVerifyCell и ViolationCount разкриват границите, обратния сигнал и броя на резултатите. Правилата са обекти TlxImportColumnRule, чиито TlxImportRuleFlags избират проверките за една колона на лист с номерация от 1, а всеки TlxImportViolation докладва реда, колоната, провинилия текст и съобщението за грешка
TXLSExternalLinkUpdateMode = (xluPromptUser, xluNever, xluAlways);

property IXLSWorkbook.SaveExternalLinkValues: Boolean;
property IXLSWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
property TXLSXWorkbook.SaveExternalLinkValues: Boolean;
property TXLSXWorkbook.UpdateLinks: TXLSExternalLinkUpdateMode;
      
И двете машини по подразбиране записват кешираните стойности и използват xluPromptUser; xluNever и xluAlways променят само предпочитанието за обновяване, съхранявано в работната книга, и никога не упълномощават или инициират достъп до външен файл или мрежа

Одит на изчисленията и подсказки на работната книга

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 обединява провалите формула-символ и разминаванията кеш-стойност в стабилни структурирани категории с координати на листа, формули, символи, очаквани и фактически стойности и ограничено съкращаване, без да променя кешовете и семантиката на работната книга. RecalcAndVerifyEx изпълнява дълбокия одит: изчислява всяка формула веднъж през графа на зависимостите в изолирано наслагване на резултати, така че зависимите клетки да четат този проход вместо остарели кешове, класифицира провалите при изчисление (неподдържани аргументи, циклични препратки, отказани или липсващи външни препратки, пропуснати таблици с данни, отмяна, вътрешни провали) с резултатни кодове, записва ограничен стек от извиквания за всеки провал, спазва бюджет за проблеми и получател за напредък/отмяна и остава само за четене, освен ако ApplyResults не запише преизчислените стойности атомарно след напълно успешен проход върху непроменена структура на работната книга
Всеки елемент на TXLSCalculationAuditReport.Issues е TXLSCalculationAuditIssue; Kind избира една от категориите xlcai*, Expected / Actual носят сравнените стойности при разминавания на кеша, Stack е ограничената верига от извиквания, изобразена като Sheet!A1 > Sheet!B2 (най-външният кадър първи), а ExternalTarget описва външната работна книга за проблеми с външни препратки. TXLSRecalcAuditOptions.OnProgress е получател TXLSRecalcAuditProgress, който получава напредъка ACurrent / ATotal и може да зададе ACancel, за да спре одита на следващата клетъчна граница с един-единствен проблем xlcaiCancelled
RunCalculationAudit е машинният вход, към който делегират обвивките на одита на ниво работна книга, и приема същия запис с опции. FormulaIsVolatile докладва дали формула би наложила преизчисляване при всеки проход (извиквания като NOW, RAND, TODAY, OFFSET, INDIRECT или неразрешима препратка)
Одитното наслагване е слой „what-if“ върху клетъчните кешове: AuditOverlayWrite съхранява заместваща стойност за една клетка (индекс на лист от 1, ред и колона от 0 по конвенцията на изчислителя), AuditOverlayRead и AuditOverlayHash я запитват, а AuditOverlayClear изпразва слоя. Налаганите стойности се връщат от обичайните getters за клетъчни стойности, така че преизчисляването и дълбокият одит ги виждат, без да мутират клетките на листа; изчистването на наслагването възстановява съхранените стойности
Свойствата-подсказки на работната книга запазват състоянията липсващо, false, true, изключено, автоматично и ръчно, докато изходният формат ги поддържа; те никога не стартират изчисления, обновяване, достъп до файлова система, мрежа или база данни при отваряне

Състояние на табличните формули и IME

property TXLSXTable.ColumnCalculatedFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TXLSXTable.ColumnTotalsFormulaArrayStates[Index: Integer]: TXLSTableFormulaArrayState;
property TDataValidation.ImeMode: TXLSDataValidationImeMode;
property TXLSXDataValidation.ImeModeKind: TXLSDataValidationImeMode;
      
Формулите на изчисляемите колони и редовете с общи суми пазят независими състояния на масива — липсващо, false, true или неизвестно — включително недокоснати лексикални изходни стойности и структурни редакции на колони; масивните формули се отхвърлят при скаларното разширяване на редове, вместо да бъдат мълчаливо променени
IME режимите използват изрични BIFF и OOXML съпоставки, запазват неизвестните изходни стойности и отхвърлят стойността disabled, достъпна само в OOXML, когато е зададена за Classic XLS
Задаването на SaveExternalLinkValues на False пропуска класическите записи XCT и CRN или поддървото sheetDataSet на външната книга в XLSX, като същевременно запазва целите на връзките, имената на листовете, външните дефинирани имена, релациите, формулните препратки, неизвестния XML и кеша в паметта; възстановяването на свойството на True в същата работна книга може отново да сериализира този запазен кеш
Недокоснатите неподдържани изходни токени остават запазени байт по байт или лексикално, изричните задавания излъчват само допустими стойности, непроменените XLSX части запазват пътя на компресирано копиране, а преобразуването XLS/XLSX пренася и двете правила; ODS и текстовите работни книги нямат еквивалентна декларация и се отварят с стойностите по подразбиране, а запазените части с DDE и OLE връзки не се третират като клетъчни кешове на външни работни книги

Инспекция и премахване на задачови панели от уеб добавки

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 и повдигат изключение преди мутация, докато Classic XLS и ODS връщат False, 0 и -1 без сканиране на пакета

Правила за показване на обектите на работната книга

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 съпоставя трите състояния със своя запис за показване на обекти на работната книга, а XLSX ги съпоставя с workbookPr.showObjects; липсващите стойности по подразбиране са xlsodmShowAll, недокоснатите Classic резервни данни и неподдържаните XLSX токени остават без загуби, а изричните задавания излъчват само канонични стойности
Прегледът рендира режима с заместители като леки кутии, носещи наличния тип, име, текст и алтернативен текст на обекта; експортьорите по подразбиране запазват пълните обекти, а задаването на ExportObjectPlaceholders изисква същата нискоразходна политика без декодиране на изображения или изграждане на сцени на диаграми
xlsodmHideAll предотвратява събирането на рисунки и разширяването на диапазони, водено от обекти, преди началото на рендирането; преобразуването на работни книги пренася и трите състояния, ODS записва пълни рисунки за режима с заместители и пропуска изхода от рисунки и медии за режима скрито-всичко, а фоновете на листовете остават независими

Стойности за калибрация на рендирането и моментни снимки

TXLSRenderCalibration = record
  WidthCorrection: Double;
  HeightCorrection: Double;
  LineSpacing: Double;
  CellMarginFactor: Double;
  ScreenScaling: Integer;
  MeasurementDpi: Integer;
end;

function XLSDefaultRenderCalibration: TXLSRenderCalibration;
function XLSValidateRenderCalibration(const AValue: TXLSRenderCalibration;
  out AInvalidField: TXLSRenderCalibrationField): Boolean;
      
Стойностите по подразбиране са 1, 1, 1, 1, 100 и 96; корекциите за ширина и височина трябва да са по-големи от нула и по-малки от две, разстоянието между редовете е ограничено до (0, 4], клетъчните полета до [0, 4], мащабирането на екрана до [100, 500] процента, а DPI за измерване до [36, 2400]
Класическите XLS и XLSX работни книги разкриват еднакви членове RenderCalibration, CaptureRenderCalibration и ResetRenderCalibration; цялостното задаване на записа валидира преди мутация, а всяко улавяне връща независима по конвенция неизменима моментна снимка на стойностите за една операция на рендиране

Геометрия на рендирането и измерване на шрифтове

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 притежава една неизменима калибрация, генерация на работна книга, идентичност на машина за рендиране, повърхност за GDI измервания и ограничен кеш за метрики в рамките на операцията; MeasureText връща ширина и височина в пиксели, височина на ред, възхождение и низхождение и брой редове, докато MaximumDigitWidthPixels, ColumnWidthToPixels, PixelsToColumnWidth, PointsToPixels, PixelsToPoints и UsableCellWidthPixels предоставят споделените геометрични преобразувания
Идентичността на кеша включва машината за рендиране, генерацията на работната книга, всички стойности на калибрацията, име на шрифт, точен размер, стилове, знаков набор, ширина на пренасяне и текст; корекциите за ширина и височина се прилагат веднъж при измерването на текст, разстоянието между редовете влияе само на височината на многоредовен текст, корекцията на клетъчните полета влияе само на използваемата ширина на текста, а мащабирането на екрана влияе само на емулацията на максимална цифрова ширина за имплицитните ширини на колони
Classic XLS и XLSX AutoFit улавят по една услуга за всяка публична операция, включително измерването на слети диапазони и двустадийното MarkSheet, докато TXLSPaginationModel.Build улавя една услуга за избрания RenderBackend; входните точки за PDF, SVG, растерни изображения, преглед преди отпечатване, преглед на работни книги и HTML избират собствена машина преди изхода, промяната на калибрацията на работната книга не може да мутира съществуващ моментен снимък, а изходът не записва размерите на листа
Директните извиквания за HTML върху работна книга, лист и диапазон улавят нова услуга xlsrgbHtml, докато постепенната TXLSXHtmlExportSession улавя веднъж в BeginExport и преизползва този моментен снимък за всички листове; и двата експортьора разкриват задържаната услуга чрез RenderGeometry за диагностика на калибрацията и кеша
Свойствата само за четене на IXLSRenderGeometry — WorkbookGeneration, CacheCapacity и CacheEntryCount — докладват обвързаната генерация и запълването на кеша за диагностика, а ImplicitWidthMaximumDigitWidthPixels връща измерването на цифрова ширина, лежащо в основата на емулацията на имплицитни ширини на колони
MeasureText запълва запис TXLSRenderTextMetrics (ширина и височина в пиксели, височина на ред, възхождение, низхождение и брой редове) от TXLSRenderFont, чийто член Styles е множество от флагове TXLSRenderFontStyle (удебелен, курсив, подчертан, зачертан)

Импортиране, генериране на код, сравнение и наблюдение

TXLSHTMLImportПретоварванията на LoadFromHTML импортират таблично HTML съдържание от поток или файл в лист, с незадължителни начални координати, избор на таблица и десетичен разделител
TXLSCodeGenLanguage (тип TlxCodeGenLanguage: lcgDelphi или lcgCppBuilder) избира езиковия диалект на генерираните оператори, GenerateToList записва генерирания код за работната книга в списък от низове, а TlxCodeGenOptions разширява изхода със сливания, ширини на колони или числови формати (cgoMerges, cgoColumnWidths, cgoNumberFormats; листовете и клетките се излъчват винаги)
TXLSXWorkbookCompareLeftName и RightName етикетират входовете, Compare извършва сравнението, а Diff разкрива получените записи TlxCompareDiff, класифицирани от TlxCompareKind
TXLSFileMonitorIntervalMs избира интервала на периодична проверка, а SynchronizeEvent — синхронизираното доставяне на обратния сигнал; обработчик на OnFileChanged може да деактивира или унищожи монитора, или да промени FileName, за да следи друг файл
TXLSCSVLoader и TXLSCSVSaverLoader-ът анализира текст с разделители в решетка от Variants в паметта — ParseFile и ParseStream запълват решетката, а CellValue, RowCount и ColCount я прочитат обратно — с автоматично разпознат разделител (ValueSeparator) и кодировка (TXLSCsvEncoding: системна ANSI, UTF-16, UTF-8) и незадължително повишаване на типовете, контролирано от DetectTypes и записи за отделните колони ColumnTypes (TXLSCsvColumnType: auto, text, number, date, boolean, skip); SkipRows, AutoTrim, LocaleTolerantNumbers и FieldWidths доизясняват обработката с фиксирана ширина и локали. TXLSCSVSaver.SaveAs записва решетката обратно с цитиране по RFC 4180, а QuoteAllStrings налага цитиране; TXLSTSVSaver наследява saver-а за изход, разделен с табулации

Помощни средства за пакети и двоично съхранение

TXLSXOpaquePackageLoadWorkbookXmlMetadata улавя XML състоянието на ниво работна книга, MarkAllPartsClean нулира флаговете за промяна, а WorkbookExtLstXml заедно с WorkbookRootAttributesXml разкриват запазените XML фрагменти на работната книга; IsDiscardedPart докладва дали име на част е било премахнато с операция на отхвърляне, например почистване на уеб добавка
TXLSFileStorageLoad, LoadFolder, Write и WriteFolder пренасят съдържанието на съставен файл; Child и Count изброяват дъщерните записи, всеки от които е TXLSFileItem — именуван възел за съхранение, чийто наследник TXLSFileStream носи съхранените байтове като TXLSBlob с DataSize, докладващ дължината на данните
TXLSBlobAdd добавя друг обект blob, докато AddByte, AddWord, AddLong, AddDouble, AddString и AddWideString добавят типизирани стойности; CopyData, CopyMem, FillByte, Write, Clear, Reset и Dump управляват съдържанието; Buff и DataLength разкриват съхранението
TXLSBlobListAppend, AppendList, CopyData и Write комбинират или излъчват записи; Entries и TotalSize разкриват състоянието на списъка
TXLSWideStringBuilderAddString добавя текст, а Length докладва натрупания брой знаци

Добавки за рисунки и преглед на работни книги

TXLSFillFormatPictureFill конфигурира запълване на фигура с картина, докато FillType избира вида запълване (плътно, градиент, картина или предварително зададена текстура), което записващият излъчва
TXLSShapesAddScrollBar и AddSpinner създават формулярни контроли — върнатите обекти TXLSScrollBar и TXLSSpinner разкриват геометрията на контролата и свързаната клетка, а spinner-ът добавя граници на стъпката Min, Max и Inc — докато RegisterScrollBar и RegisterSpinner регистрират контроли, заредени от работна книга
TXLSWorkbookViewerCanUndo и CanRedo докладват наличието на история на редакциите, докато ReferencePickMode включва интерактивен избор на препратка към клетка или диапазон

Пагинация, изображения и печат

TXLSGraphicsBackendDrawTiledImage рисува фон на листа многократно върху отрязаната област на страницата
TXLSPaginationModelCompactRangeMode, IncludeDrawings, IncludeGridlines, IncludeCellBorders и PaintPageBackground управляват съдържанието на страницата; RenderDPI, RenderColorMode и RenderSession разкриват разделителната способност на изхода, обработката на цветовете и активната сесия на рендиране
TXLSCellImageExporterMeasure изчислява размерите в пиксели за classic или XLSX диапазони; ImageFormat, JpegQuality, MaxPixels, MaxBytes, IncludeObjects, IncludeGridlines, IncludeCellBorders, BackgroundColor, TransparentBackground, BeforePaint, AfterPaint и PaginationModel конфигурират и наблюдават рендирането
TXLSPageImageExporterBeforePaint, AfterPaint, MaxPixels, MaxBytes, BackgroundColor и TransparentBackground прилагат същите куки за рисуване и ограничения за безопасност на изхода при експорт на пагинирани изображения
TXLSPrintDocumentPrintWorksheet, PrintWorkbook и PrintAllVisibleSheets изпращат classic или XLSX съдържание към VCL принтера; FirstPage, PrintRangeOnly, Collate, Copies, OnBeforeNewPage и OnAfterGeneratePage управляват печатната задача

Класически Chart модели и Chart обекти на листа

TXLSChartSeriesAddTrendline и AddErrorBars създават типизирани анотации за серията, а TrendlineCount и ErrorBarCount докладват техните размери
TXLSChartAxisHasAxcExtFlag тества един суров AXCEXT флаг, без да изисква от извикващия да декодира битовата маска
TXLSChartModelAxisGroupCount докладва броя на основните и вторичните групи оси, декодирани от диаграмата
TXLSCustomChartAddAreaData добавя предварително изграден area елемент, чийто формули се превързват при запис, а ApplyDateAxisModel прилага типизиран модел на дата-ос върху суровите записи на диаграмата
TXLSWorksheetAddChartObject закачва рамка на диаграма върху листа и я свързва със споделения builder за диаграми
TXLSXChartLayoutResolverTryResolve разрешава един правоъгълник на оформлението с незадължителна валидация на размера, а ResolveChart изчислява правоъгълниците на диаграмата, заглавието, легендата, областта с данни и осите

Типизиран декодиран Chart модел

Декодираното състояние на диаграмата е изложено като обикновени записи и enum-и, така че инспектиращият код никога не се налага да обхожда сурови BIFF записи: TXLSChartInfo носи обобщената информация за декодираната диаграма с TXLSChartTypeFamily (cfBar, cfLine, cfPie, cfArea, cfScatter, cfRadar, cfDoughnut, cfSurface, cfBubble), всяка серия докладва TXLSChartSeriesType, а TXLSChart3DState и TXLSChart3DInfo описват тримерните изгледи. TXLSChartAxisType (catCategory, catValue, catSeries, catDate) и TXLSChartLegendPosition класифицират оси и легенди, докато моделът на дата-ос използва TXLSChartDateUnit (xcduDays, xcduMonths, xcduYears) и TXLSChartDateValues. TXLSCustomChart разкрива декодирания модел чрез TXLSChartInfo; анотациите за линии на тренда и ленти за грешки са типизирани обекти (TXLSChartTrendline, TXLSChartErrorBars), достъпни от всяка серия

Записи за създаване на диаграми

Създаването на диаграмни листове и builder код приема обикновени записи вместо обектни графи: TXLSChartTrendlineInfo, TXLSChartErrorBarsInfo, TXLSChartDataLabelsInfo и TXLSChartSeriesStyleInfo попълват записите за серията, подавани на TXLSWorksheets.AddChartSheet и споделения builder за диаграми, а TXLSPivotChartInfo описва рамковането на PivotChart, използвано при закачане на диаграма към обобщена таблица

PDF прикачени файлове, подписи и HTML експорт

IXLSPDFAttachmentSourceWriteTo поточи байтовете на прикачения файл към PDF експорта, без експортьорът да притежава изходните данни
TXLSPDFExportAttachmentDuplicatePolicy избира обработката на дублирани имена, AttachmentSpoolThreshold контролира спулинга на прикачените файлове, а DocumentLanguage записва метаданните за език на документа
TXLSPDFSignatureTextAlign, TextSize, TextColor, TextBold и TextItalic конфигурират видимия вид на подписа
TXLSHTMLExportViewMode (тип TXLSHtmlViewMode: текущ изглед или пълна таблица на листа) избира HTML представянето, а HotTrackTargets (множество от TXLSHtmlHotTrackTarget) и HotTrackColor конфигурират интерактивно осветяване на клетки и обекти
TXLSXHtmlExportOptionsViewMode, HotTrackTargets и HotTrackColor предоставят еквивалентните настройки за XLSX HTML експорт

Одит на изчисленията и контроли на работната книга

TXLSCalculationAuditReportTruncated докладва съкращаване по лимит за проблеми, StackTruncated — съкращаване на кадрите на стека от извиквания, а Issues индексира записаните изчислителни проблеми
TXLSUserFunctionRegistryGeneration се променя при всяка промяна на набора регистрирани потребителски функции, което позволява кешираните формулни връзки да се инвалидират
EXLSReportRecoverableDataCategory идентифицира категорията възстановими отчетни данни, представена на извикващия
IXLSWorkBookManualCalculationThreadCount ограничава броя работни нишки, използвани при ръчно изчисление
TXLSXDataValidationHasUnknownImeMode докладва стойност на IME режим, която HotXLS е запазил, но не разпознава
TXLSXTableColumnCalculatedFormulaArrayRaw и ColumnTotalsFormulaArrayRaw разкриват оригиналния текст на масивната формула за колоните на таблицата

Съвместимост със старото PivotCache рамковане

TXLSPivotCacheRawBucketIndex идентифицира позицията в изходния подпоток, RawFramingIsLegacy разпознава старо HotXLS рамковане, RawModelIsComplete докладва дали типизираният модел обхваща всеки запис, а CanUpgradeFraming — дали типизираното повторно излъчване по избор е безопасно
TXLSPivotCacheStreamId разкрива идентичността на класическия поток на кеша, SourceDataType — типа на класическите изходни данни, а RawHasStorageStream докладва дали зареден кеш идва от независим поток за съхранение на PivotCache
TXLSWorkbookUpgradeLegacyPivotCacheFraming включва по избор презаписването само на стари HotXLS рамкования на кеша, чийто типизиран модел е пълен; обичайното сурово възпроизвеждане на кеша остава поведението по подразбиране

StreamId се записва като запис SXStreamID ([MS-XLS] §2.4.303) и се повтаря като полето idstm в заглавката на SXDB, което трябва да съвпада с него; SourceDataType се записва като запис SXVS ([MS-XLS] §2.4.317: $0001 лист, $0002 външен, $0004 консолидация, $0010 сценарий) и се повтаря като полето vsType в заглавката на SXDB, което трябва да съвпада с него. Кешовете, изградени от диапазон на лист, стартират от типа лист, докато кешовете, прочетени от файл, запазват стойността, носена от техния подпоток, така че BIFF записващият никога не оставя поле SXDB, назоваващо запис, който не е излъчил; RawHasStorageStream маркира кеш, зареден от собствен поток за съхранение, чийто дескриптор, глобален за работната книга, предхожда кешираните записи

Интеграция с Clipboard и опции за поставяне

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;
      
Опциите за поставяне са споделени от претоварванията PasteFromClipboard на двете фасади: xlpoValuesOnly запазва кешираните стойности на формулните клетки и прескача формати и сливания, а xlpoInsertRows и xlpoInsertCols отместват съществуващото съдържание, преди блокът да бъде поставен
Помощните функции обвиват Windows Clipboard за обмен на данни между таблици: текстовите помощни функции използват CF_UNICODETEXT (с fallback към CF_TEXT през текущата ANSI кодова страница), XLSSetClipboardTextAndHtml записва текст и стилизиран HTML Format payload в една транзакция, XLSBuildHtmlClipboard изчислява байтовите отмествания на CF_HTML за документ или фрагмент, а XLSEncodeClipboardField екранира едно поле, разделено с табулации. XLSParseClipboardGrid анализира текста от Clipboard като редове, разделени с табулации, със същото разпознаване на типове, което TXLSCSVLoader използва за CSV, а помощните функции за Biff8 откриват и четат собствения поток, който самият Excel поставя в Clipboard, така че поставените данни запазват стойности, формули и форматиране без загуба на текст

Разрешаване на показвания текст на клетка

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;
      
Един споделен разрешител решава какво показва клетката за дадено състояние на изгледа: формули вместо стойности, потиснати нули, скрит текст на формула в защитени листове и удвоеният коефициент на ширина, който Excel прилага при показване на формули. Прегледът на работната книга и рендерите го извикват чрез своите входни точки с опции за показване, а приложенията могат да извикат XLSResolveCellDisplay директно със собствени входни записи; XLSDefaultCellDisplayOptions връща каноничните стойности по подразбиране, а XLSNormalizeFormulaDisplayText нормализира формулния низ за показване

Обекти за валидация на данни в Classic XLS

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 създават правила TDVRange в TDVRangeList на листа; всяко правило носи своя TXLSDataValidationType, граници, съобщения за вход и грешка и TXLSDvErrorStyle. TDataValidator оценява редакцията срещу правилата и докладва дали стойността е допустима — това е и проверката зад подсказките за валидация на самия Excel

Сканиране и разрешаване на индексирани цветове

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, NearestIndexedColor и ScanIndexedColorUsage: разрешаването докладва от кой от четирите източника TXLSIndexedColorKind идва индексираният токен, заедно със слота му в палитрата, ролята на системния цвят и нормализирания ARGB, търсенето на най-близък цвят добавя квадрата на RGB разстоянието и флага за точно съвпадение, а сканирането на употребите етикетира всяка категория потребител, заключваща слот в палитрата. Библиотеката поддържа вътрешен кеш TXLSIndexedColorMatcher, ключуван по генерация на палитрата — FindNearest отговаря на заявките за най-близък цвят от него, а UpdateSlot закърпва един слот — така че повторните разрешения остават без заделяне на памет

Помощни функции за 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;
      
Самостоятелни помощни функции за същата A1 нотация, която приемат API на работната книга: форматират нулево-базирани координати като A1 препратка към клетка и разчитат обратно препратки към клетка или диапазон, връщайки False за неправилен вход вместо да повдигат изключение

Вижте също