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

Класс TXLSXWorkbook

Контейнер верхнего уровня для рабочей книги Excel 2007+ (.xlsx). Объявлено в lxHandleX. Содержит коллекцию TXLSXSheets и предоставляет точки входа SaveAs / Open для рабочих книг OOXML, импорта CSV / TSV и рабочих процессов чтения/записи OpenDocument Spreadsheet (.ods)

Объявление

type
  TXLSXFileFormat = (xlsxOpenXMLWorkbook, xlsxOpenDocumentSpreadsheet,
    xlsxOpenXMLTemplate, xlsxOpenXMLMacroEnabledTemplate, xlsxExcelBinaryWorkbook);

  TODSExportOptions = class
    constructor Create;
    property Generator: WideString;
    property IncludeCharts: Boolean;
    property IncludeImages: Boolean;
  end;

  TXLSXWorkbook = class
    constructor Create;
    destructor Destroy; override;
    function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
    function CreateLoadedCellCursor(AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
    function CreateReadOnlyView: IXLSReadOnlyWorkbookView;
    property RenderCalibration: TXLSRenderCalibration;
    function CaptureRenderCalibration: TXLSRenderCalibration;
    procedure ResetRenderCalibration;
    function CreateRenderGeometry(ABackend: TXLSRenderGeometryBackend;
      ACacheCapacity: Integer = 4096): IXLSRenderGeometry;
    function SaveAs(const FileName: WideString): Integer; overload;
    function SaveAs(const FileName: WideString; FileFormat: TXLSXFileFormat): Integer; overload;
    function SaveAs(Stream: TStream): Integer; overload;
    function SaveAs(Stream: TStream; FileFormat: TXLSXFileFormat): Integer; overload;
    function GetConversionReport(ATarget: TXLSConversionTarget): TXLSConversionReport;
    function SaveAsChecked(Stream: TStream; FileFormat: TXLSXFileFormat;
      AllowLossy: Boolean = False): Integer; overload;
    function SaveAsChecked(const FileName: WideString; FileFormat: TXLSXFileFormat;
      AllowLossy: Boolean = False): Integer; overload;
    function Open(const FileName: WideString): Integer; overload;
    function Open(const FileName: WideString; const Password: WideString): Integer; overload;
    function Open(Stream: TStream): Integer; overload;
    function OpenCSV(const FileName: WideString): Integer; overload;
    function OpenCSV(const FileName: WideString; ASeparator: WideChar;
      ADetectTypes: Boolean): Integer; overload;
    function OpenCSV(Stream: TStream): Integer; overload;
    function OpenCSV(Stream: TStream; ASeparator: WideChar;
      ADetectTypes: Boolean): Integer; overload;
    function OpenODS(const FileName: WideString): Integer; overload;
    function OpenODS(Stream: TStream): Integer; overload;
    function SaveAsODS(const FileName: WideString): Integer; overload;
    function SaveAsODS(Stream: TStream): Integer; overload;
    function SaveAsODS(const FileName: WideString; Options: TODSExportOptions): Integer; overload;
    function SaveAsODS(Stream: TStream; Options: TODSExportOptions): Integer; overload;
    function GetODSSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
    function GetODSSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
    function GetSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
    function GetSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
    function SaveAsCSV(const FileName: WideString): Integer; overload;
    function SaveAsCSV(const FileName: WideString; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
    function SaveAsCSV(Stream: TStream): Integer; overload;
    function SaveAsCSV(Stream: TStream; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
    function SaveAsHTML(const FileName: WideString): Integer; overload;
    function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(const FileName: WideString; SheetIndex: Integer): Integer; overload;
    function SaveAsHTML(const FileName: WideString; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(Stream: TStream): Integer; overload;
    function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(Stream: TStream; SheetIndex: Integer): Integer; overload;
    function SaveAsHTML(Stream: TStream; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsRTF(const FileName: WideString): Integer; overload;
    function SaveAsRTF(const FileName: WideString; SheetIndex: Integer): Integer; overload;
    function SaveAsRTF(Stream: TStream): Integer; overload;
    function SaveAsRTF(Stream: TStream; SheetIndex: Integer): Integer; overload;
    // AES encryption (ECMA-376 Standard Encryption) write path.
    // OpenEncrypted still raises for encrypted packages.
    function SaveAsEncrypted(const FileName, APassword: WideString): Integer;
    function OpenEncrypted(const FileName, APassword: WideString): Integer;
    function CanReadEncrypted(const FileName: WideString): Boolean;
    function Calculate(const Formula: WideString): Variant;
    function CalculateAndVerify: Integer; overload;
    function CalculateAndVerify(out AMismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
    property OnUserFunction: TXLSUserFunctionEvent;
    property OnUserFunctionEx: TXLSUserFunctionExEvent;
    property AllowUnsafeFormulaCallbacks: Boolean;
    // Document properties (docProps/core.xml + docProps/app.xml).
    property Title, Author, Subject, Keywords, Description,
             Category, LastModifiedBy, Company,
             Application, AppVersion: WideString;
    property Created, Modified: TDateTime;
    // Workbook protection (16-bit legacy hash).
    procedure ProtectWorkbook; overload;
    procedure ProtectWorkbook(const APassword: WideString); overload;
    procedure ProtectWorkbook(const APassword: WideString; ALockStructure, ALockWindows: Boolean); overload;
    procedure UnProtectWorkbook;
    property IsWorkbookProtected: Boolean;
    property LockStructure, LockWindows: Boolean;
    // VBA project payload (round-trips byte-for-byte). Workbook is saved
    // with macro-enabled content type when HasVbaProject is True.
    procedure LoadVbaProjectFromFile(const AFileName: WideString);
    procedure ClearVbaProject;
    function HasVbaProject: Boolean;
    property VbaProjectDefined: Boolean;
    property VbaProject: AnsiString;
    property ParsedVBAProject: TXLSVBAProject;
    // Unknown package and workbook extension preservation
    procedure ClearUnsupportedParts;
    function UnsupportedPartCount: Integer;
    function UnsupportedPartBytes: Int64;
    property PreserveUnsupportedParts: Boolean;
    // Chart sheet helper — creates a sheet flagged IsChartSheet and
    // seeds Charts[0] with a default full-page anchor.
    function AddChartSheet(const AName: WideString;
      AChartType: TXLSXChartType; const ATitle: WideString): TXLSXWorksheet;
    // Streaming SaveAs path (TXLSWideStringBuilder + one sheet at a time).
    property StreamingWrite: Boolean;
    // Streaming parallel Open path
    property ParallelParse: Boolean;
    property ParallelParseThreads: Integer;
    // Workbook-level collections.
    property ActiveSheet: Integer;
    property Minimized: Boolean;
    property WindowHidden: Boolean;
    property ShowHorizontalScroll: Boolean;
    property ShowVerticalScroll: Boolean;
    property ShowSheetTabs: Boolean;
    property XWindow: Integer;
    property YWindow: Integer;
    property WindowWidth: Integer;
    property WindowHeight: Integer;
    property TabRatio: Integer;
    property FirstSheet: Integer;
    property AutoFilterDateGrouping: Boolean;
    property Date1904: Boolean;
    // Workbook calculation policy
    property Iterate: Boolean;
    property IterateCount: Integer;
    property IterateDelta: Double;
    property CalcId: Integer;
    property FullCalcOnLoad: Boolean;
    property CalcMode: WideString;
    property RefMode: WideString;
    property ForceFullCalc: Boolean;
    property CalcCompleted: Boolean;
    property CalcOnSave: Boolean;
    property FullPrecision: Boolean;
    property ConcurrentCalc: Boolean;
    property ConcurrentManualCount: Integer;
    function CreateWorkspaceWorkbook: IXLSWorkspaceWorkbook;
    procedure RegisterExternalWorkbook(const AWorkbookName: WideString;
      AWorkbook: TXLSXWorkbook);
    procedure UnregisterExternalWorkbook(const AWorkbookName: WideString);
    property SourceFormat: TXLSXFileFormat;
    property IndexedColor[Index: Integer]: LongWord;
    function  NearestIndexedColor(AArgb: LongWord;
      out AMatch: TXLSNearestIndexedColorMatch): Boolean;
    function  ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
    function  BuildBiffPalettePlan: TXLSBiffPalettePlan;
    function  ApplyBiffPalettePlan(
      const APlan: TXLSBiffPalettePlan): Boolean;
    function  HasCustomIndexedColor(Index: Integer): Boolean;
    function  CustomIndexedColorCount: Integer;
    procedure ResetIndexedColors;
    property Sheets: TXLSXSheets;
    property Fonts: TXLSXFonts;
    property Fills: TXLSXFills;
    property Borders: TXLSXBorders;
    property NumberFormats: TXLSXNumberFormats;
    property Alignments: TXLSXAlignments;
    property DefinedNames: TXLSXDefinedNames;
    property ExternalLinks: TXLSXExternalLinks;
    property ExternalWorkspace: TXLSWorkbookWorkspace;
  end;
      

Члены

Sheetsлист коллекция. See TXLSXSheets
FontsТехническое описание и идентификаторы: HotXLS. TXLSXCell.FontIndex в индекс этой коллекции (отсчёт с 1). См. TXLSXFont / TXLSXFonts
FillsПалитра заливок уровня книги. Ячейки выбирают заливку, задавая TXLSXCell.FillIndex в индекс этой коллекции (отсчёт с 1). См. TXLSXFill / TXLSXFills
BordersПалитра границ уровня книги. Ячейки выбирают границу, задавая TXLSXCell.BorderIndex в индекс этой коллекции (отсчёт с 1). См. TXLSXBorder / TXLSXBorders
NumberFormatsПалитра пользовательских числовых форматов уровня книги. Ячейки выбирают формат, задавая TXLSXCell.NumberFormatIndex в индекс этой коллекции (отсчёт с 1). См TXLSXNumberFormat / TXLSXNumberFormats
DefinedNamesИменованные диапазоны уровня книги (с областью действия на книгу или лист). См TXLSXDefinedName / TXLSXDefinedNames
CalculateКомпилирует и вычисляет строку формулы Excel для активного листа, а ведущий = принимается Ссылки на ячейки, диапазоны, формулы в ячейках, на которые ссылаются формулы, межлистовые ссылки, вложенные имена, заданные формулами, широковещательные массивы с поячеечными ошибками, массивы многомерной регрессии и предсказания, а также поддерживаемые текстовые функции, функции дат и рабочих дней, инженерные функции и функции преобразования систем счисления, битовые, статистические, агрегатные и математические функции вычисляются общим движком формул HotXLS См. OnUserFunction для обработки пользовательских или неподдерживаемых функций
CreateLoadedCellCursorСоздаёт курсор с константным состоянием и порядком «строка за строкой» по сохранённым значениям и формулам XLSX, с перегрузкой, которая также выдаёт независимо оформленные пустые ячейки как xlckBlank. Разреженные блоки и упакованное хранилище проходятся без материализации упакованного представления. См. CreateLoadedCellCursor method
CreateReadOnlyViewСоздаёт представление общей модели с константным временем доступа, локальным активным листом, снимками по значению, кэшированными результатами формул, опциональной изолированной оценкой формул, прямыми чтениями упакованных ячеек и временем жизни с подсчётом ссылок через IXLSXWorkbookOwner, and fail-fast write exclusion; the IXLSReadOnlyWorkbookView also reports SheetCount Техническое описание и идентификаторы: HotXLS. TXLSXFill / TXLSXFills
SaveSemanticSnapshot, ComputeSemanticHashТехническое описание и идентификаторы: HotXLS. TXLSXBorder / TXLSXBorders
RenderCalibration, CaptureRenderCalibration, ResetRenderCalibrationТехническое описание и идентификаторы: HotXLS TXLSXNumberFormat / TXLSXNumberFormats
CreateRenderGeometryТехническое описание и идентификаторы: HotXLS TXLSXDefinedName / TXLSXDefinedNames
OnUserFunction, OnUserFunctionExТехническое описание и идентификаторы: HotXLS. Calculate когда формула вызывает пользовательскую или неподдерживаемую функцию. Подробности: OnUserFunction
AllowUnsafeFormulaCallbacksПо умолчанию false и не даёт опасным внешним или макро-именам функций доходить до обработчиков пользовательских функций до вычисления аргументов. См. callback safety policy
GetSheetNames(FileName, AList), GetSheetNames(Stream, AList)Reads xl/workbook.xml и добавляет имена листов в AList в порядке книги, не загружая XML листов. Перегрузка для потока ожидает полный поток пакета XLSX. Возвращает количество прочитанных имён или -1 к handle custom или unsupported функции
AlignmentsCallback используемый через TXLSXCell.AlignmentIndex когда формула calls custom или unsupported функция. See OnUserFunction / OnUserFunctionEx callback
Document propertiesТехническое описание и идентификаторы: XML, XLSX docProps/core.xml + docProps/app.xml при SaveAs (иначе книга сохраняет минимальный набор частей)
ProtectWorkbook / UnProtectWorkbookПереключатель защиты книги с необязательным 16-битным хэшем устаревшего пароля и LockStructure / LockWindows flags. Reflected as <workbookProtection> in xl/workbook.xml
LoadVbaProjectFromFile / VbaProject / HasVbaProject / VbaProjectDefinedLoadVbaProjectFromFile imports a raw vbaProject.bin payload; VbaProject exposes the bytes; HasVbaProject and read-only VbaProjectDefined оба сообщают, присутствуют ли данные. Сохраняйте с расширением .xlsm , когда макросы должны быть включены в Excel
ParsedVBAProjectRead-only parsed view of the current vbaProject.bin данные. Когда данные — валидное OLE-хранилище VBA, возвращает TXLSVBAProject с именами модулей и исходным текстом; иначе возвращает nil. The raw VbaProject данные остаются эталонными байтами, которые используются для циклов SaveAs/Open
AddChartSheet(Name, Type, Title)Creates a worksheet flagged IsChartSheet = True and seeds Charts[0] с разумным якорем по умолчанию на всю страницу. SaveAs записывает такие листы в xl/chartsheets/sheetN.xmlТехническое описание и идентификаторы: HotXLS TXLSXAlignment
ParallelParseТехническое описание и идентификаторы: LastModifiedBy, AppVersion, SaveAs Open направляет записи ZIP листов напрямую в локальные для воркеров распаковщики и XML-ридеры Промежуточные копии распакованного XML листов не сохраняются, а источник пакета блокируется только на каждое позиционированное чтение. Задайте False, чтобы разбирать по одному листу за раз. По умолчанию True
ParallelParseThreadsЗадаёт максимальное количество потоков листов, разбираемых параллельно во время Open. Ноль выбирает автоматическое количество воркеров, положительные значения задают явный предел. Активные рабочие наборы распаковщиков и XML-ридеров ограничены этим числом
StreamingWriteWhen True, SaveAs uses WriteWorksheetXmlStreaming на лист — кэш sheetXmls не удерживается, sharedStrings.xml выдаётся последним, после того как каждый лист наполнит SST. В сочетании с построчным TXLSWideStringBuilder это сохраняет память линейной на больших листах. По умолчанию False (существующее поведение)
PreserveUnsupportedParts / ClearUnsupportedPartsPreserveUnsupportedParts по умолчанию True и сохраняет неизвестные части пакета, достижимые через связи, а также чужеродные объявления пространств имён корня книги, атрибуты markup-compatibility и полные элементы уровня книги <extLst> книга protection toggle с optional 16-bit legacy пароль hash и ClearUnsupportedParts/ UnsupportedPartCount flags. Reflected as UnsupportedPartBytes в xl/книга.xml
PreserveRawPartsТехническое описание и идентификаторы: HotXLS
SaveAsEncrypted / OpenEncrypted / CanReadEncryptedТехническое описание и идентификаторы: OLE, VBA, SaveAs SaveAsEncrypted AddChartSheet(Name, Type, Title) CanReadEncrypted Техническое описание и идентификаторы: SaveAs OpenEncrypted TXLSXChart Open StreamingWrite EXlsxEncryptionNotImplemented Техническое описание и идентификаторы: ECMA, AES, OLE, NI, OLE2
SaveAs(FileName)Записывает книгу в указанный файл. Возвращает 1 при успехе и отрицательное значение при сбое. Если в книге нет листов, перед записью добавляется стандартный Sheet1 is added before writing
Эта перегрузка и SaveAs(FileName, FileFormat) сначала пишут вывод во временную область и только потом заменяют целевой файл Если замена не удалась, возвращается -1 , а LastDiagnostic сообщает xlsDiagnosticOutputCommitFailed (1005), исходный Windows-код NativeCodeи системное сообщение об ошибке Старый целевой файл и свойство книги FileName остаются без изменений; временный вывод освобождается, а следующее сохранение сбрасывает предыдущую диагностику
SaveAs(FileName, FileFormat)Принимает xlsxOpenXMLWorkbook для обычного вывода в OOXML, xlsxOpenDocumentSpreadsheet для ODS, xlsxOpenXMLTemplate для шаблона XLTX без макросов или xlsxOpenXMLMacroEnabledTemplate для шаблона XLTM; для всех вариантов OOXML поддерживаются буферизованный и потоковый вывод
Шаблонный вывод записывает application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml для /xl/workbook.xml; для файлов используйте расширение .xltx , а при отдаче пакета по HTTP — application/vnd.openxmlformats-officedocument.spreadsheetml.template when serving the package over HTTP
Формат нужно выбирать явно: ни расширение файла, ни импортированный шаблон не меняют вывод SaveAs по умолчанию
Если в книге есть VBA-проект, вывод XLTX вернет -1 с диагностикой о неподдерживаемом формате еще до записи целевого файла; XLTM сохраняет существующий VBA-проект и также принимает книгу без макросов
SaveAsODS остается именованным ярлыком для вывода ODS с опциональным управлением через TODSExportOptions control
GetConversionReport / SaveAsChecked Осматривает принадлежащий вызывающему коду отчёт конвертации известных функций без мутаций или отклоняет деградированные и отброшенные функции до записи, оставляя AllowLossy=False Явное сохранение с потерями всё равно отклоняет неподдерживаемые конвертации; о целях, владении, диагностике и границах сохранения см. точность вычислений и конвертации
SaveAs(Stream) / SaveAs(Stream, FileFormat)Записывает книгу напрямую в любой TStream, а перегрузка FileFormat принимает xlsxOpenXMLWorkbook, xlsxOpenDocumentSpreadsheet, xlsxOpenXMLTemplate или xlsxOpenXMLMacroEnabledTemplate для OOXML-книг в памяти, таблиц ODS, шаблонов XLTX или шаблонов XLTM
Возвращает 1 при успехе, а сохранение в поток соблюдает RecalcBeforeSave: ручной режим сохраняет существующие кэши формул, а политики dirty и always обновляют их перед сериализацией
Владение потоком остаётся у вызывающего; отмена до начала записи сохраняет содержимое и позицию потока, а сбой после начала сериализации может оставить частичный вывод
Open(FileName)Читает архив OOXML .xlsx и заменяет Sheets collection with its contents. Returns 1 on success
Open(FileName, Password)Зарезервировано для будущей поддержки шифрованного XLSX. Ведёт себя как Open(FileName) today — the password is ignored
Open(Stream)Reads an OOXML .xlsx archive from a TStream. Returns 1 on success
OpenCSV(FileName) / OpenCSV(Stream)Импортирует текст CSV или TSV в книгу с автоматическим определением разделителя (,, ;, табуляция или вертикальная черта), определение кодировки UTF-8 / UTF-16 по BOM, поля в кавычках в стиле RFC 4180 и опциональный вывод типов значений через ADetectTypes overloads. Calling Open(FileName) on .csv or .tsv направляется в этот импортёр автоматически. См. OpenCSV method
OpenODS(FileName) / OpenODS(Stream)Imports an OpenDocument Spreadsheet (.ods) пакет из файла или потока. Читатель загружает content.xml, shared style information from styles.xml, и настройки вида при наличии, сохраняя имена листов, скалярные значения, кэшированные результаты формул, базовое преобразование ссылок формул, повторяющиеся строки/столбцы/ячейки, объединённые диапазоны, rich text, гиперссылки, примечания, встроенные изображения, встроенные диаграммы, скрытые строки/столбцы/листы, высоты строк, ширины столбцов, унаследованные/стандартные стили, форматы чисел/дат/времени/валюты/научные/дробные, состояние защиты ячеек и листов, именованные диапазоны, области печати, ручные разрывы страниц, закреплённые области, диапазоны автофильтра, группы структуры строк/столбцов, колонтитулы, проверки данных с подсказками, условные форматы, включая формулы/цветовые шкалы/data bars, и цвет ярлыка листа. Полная семантика OpenFormula, ключи защиты ODS, геометрия примечаний, расширенное форматирование примечаний и функции пакета вне содержимого таблиц не преобразуются
SaveAsODS(FileName) / SaveAsODS(Stream), with optional TODSExportOptionsСохраняет книгу как валидный пакет OpenDocument Spreadsheet. Он записывает ODF mimetype, манифест, метаданные, стили и содержимое листов напрямую, перенося типизированные значения, формулы, стили, rich text, размеры, объединения, гиперссылки, изображения, диаграммы, именованные диапазоны, диапазоны автофильтра, условные форматы, проверки данных, закреплённые области, параметры страницы, колонтитулы, области печати, ручные разрывы страниц, группы структуры, цвет ярлыка и видимость листов там, где эти возможности представлены в модели книги HotXLS. Передача опций экспорта, включая nil, сохраняет обычную политику пересчёта, отмену по прогрессу, диагностику и защиту от записи. Вывод в файл сначала готовит соседний файл и заменяет место назначения только после успешной сериализации; сбой сериализации и отмена до фиксации сохраняют прежнее место назначения. Прогресс записи сообщает о каждой завершённой таблице, а ppsEnd — терминальное уведомление, чей запрос Abort не может отменить уже завершённое сохранение. Вывод в поток сохраняет владение вызывающего и обычное поведение потокового сохранения, которое может оставить частичный вывод после начала сериализации
TODSExportOptionsControls ODS export. Generator overrides the meta:generator value in meta.xml; пустое значение использует встроенную строку генератора HotXLS. IncludeCharts and IncludeImages по умолчанию True и при False удаляют соответствующие рамки рисунков, части пакета и записи манифеста вместе, чтобы вывод не содержал осиротевших ссылок на диаграммы или изображения. Экземпляр опций принадлежит вызывающему и должен быть освобождён им
GetODSSheetNames(FileName, AList), GetODSSheetNames(Stream, AList)Reads only ODS table names from content.xml into AList без сброса или наполнения книги. Используйте, когда диалогу выбора файла или импортному сценарию нужны имена листов до загрузки книги
SaveAsCSV overloadsЧетыре перегрузки (FileName или Stream × активный лист по умолчанию / явный SheetIndex + Delimiter). Записывает выбранный лист как UTF-8 CSV с BOM. Значения дат выводятся как yyyy-mm-dd hh:nn:ss; ячейки с формулами вычисляются перед экспортом, а текст формулы используется, только когда вычисление недоступно Возвращает 0 при успехе
SaveAsHTML overloadsOptions overloads accept TXLSXHtmlExportOptions for Title, WriteDocument, IncludeStyles, IncludeBOM, and TableClass. Set WriteDocument to False for a table fragment; set IncludeBOM to False при встраивании вывода в существующий ответ UTF-8. Экспортированный вывод теперь сохраняет гиперссылки ячеек как <a> anchors and anchored images as inline data: URI изображений; экспорт уровня книги включает якоря вне заполненных ячеек. Примечания ячеек также выдаются как экранированные <td>title атрибуты, а экспорт уровня книги включает якоря, содержащие только примечания. Когда IncludeStyles is enabled, explicit ColWidth values are emitted as <col> widths and explicit RowHeight values as <tr> стили высоты. Фрагменты rich text в ячейках выдаются как экранированные <span> элементы со встроенными стилями шрифта, цвета, выделения и подчёркивания, когда IncludeStyles включён. Границы ячеек выдаются как CSS border-left, border-right, border-top, and border-bottom rules when IncludeStyles включён. Скрытые строки и столбцы, помеченные RowHidden / ColHidden, а также столбцы с явной нулевой шириной, пропускаются в сгенерированной таблице, а <colgroup>. Настройки вертикального выравнивания выдаются как CSS vertical-align rules when IncludeStyles is enabled
SaveAsRTF overloadsЧетыре перегрузки (FileName или Stream × активный лист по умолчанию / явный SheetIndex). Записывает выбранный лист как документ RTF 1.6 с простой таблицей. Ширины столбцов вычисляются из ColWidth данных (1 символьная единица ≈ 96 twips; по умолчанию 809 twips). Применяются полужирный / курсив / размер шрифта по ячейкам; не-ASCII символы кодируются как знаковые 16-битные \uN? RTF-escape-последовательности unicode. Объединённые ячейки не растягиваются. Возвращает 0 при успехе
ActiveSheetЗаписывает книгу прямо в любой ActiveSheetIndex. Перегрузка с SaveAs принимает activeTab="N" , <workbookView> или activeTab — для OOXML-книг, ODS-таблиц или шаблонов XLTX в памяти. При успехе возвращается tabSelected="1"
Minimized / WindowHidden / ShowHorizontalScroll / ShowVerticalScrollТехническое описание и идентификаторы: OOXML, xlsx <workbookView>Reserved для future encrypted XLSX поддержка. Behaves like Minimized today — пароль является ignored minimized="1"Open(Stream) WindowHidden Техническое описание и идентификаторы: OOXML, xlsx visibility="hidden"OpenCSV(FileName) / OpenCSV(Stream) ShowHorizontalScroll Техническое описание и идентификаторы: CSV, TSV, BOM, UTF-8, UTF-16, RFC ShowVerticalScroll OpenCSV метод Open Техническое описание и идентификаторы: HotXLS
XWindow / YWindow / WindowWidth / WindowHeightСообщает семейство пакетов, загруженное последним успешным вызовом <workbookView>или XWindow . Для книг и шаблонов OOXML, включая XLTX, возвращается YWindow , для ODS — WindowWidth ; новая книга сообщает WindowHeight , пока не открыт файл. Это свойство не выбирает формат вывода
ShowSheetTabs / TabRatio / FirstSheet / AutoFilterDateGroupingТехническое описание и идентификаторы: ARGB, OOXML, SaveAs <workbookView>. ShowSheetTabs hides or shows the sheet-tab bar, TabRatio управляет разделением ширины между полосой ярлыков и полосой прокрутки и ограничивается диапазоном 0..1000, FirstSheet выбирает первый видимый ярлык как индекс листа с нулевой базой и ограничивается существующим листом, а AutoFilterDateGrouping управляет группировкой дат Excel в выпадающих списках автофильтра. Open round-trips all four values
Date1904Workbook date base. False (по умолчанию) = эпоха Windows 1900; True = эпоха Mac 1904 (сдвигает каждый серийный номер даты на 1462 дня). Задайте это before assigning TDateTime значения ячеек, чтобы Excel отображал те же календарные даты
Iterate / IterateCount / IterateDeltaУправляет итеративным вычислением циклических ссылок IterateCount ограничивается диапазоном 1..32767 и по умолчанию равен 100 IterateDelta принимает неотрицательные конечные значения и по умолчанию равен 0.001 Ненулевые по умолчанию лимиты сохраняются, даже когда Iterate is currently False
CalcMode / RefMode / CalcIdУправляет режимом вычисления книги, стилем ссылок формул и идентичностью движка вычислений CalcMode accepts auto, manual, or autoNoTableRefMode accepts A1 or R1C1 с входом без учёта регистра и каноническим выводом Вывод современных rich-error использует записанный CalcId не менее 191029, чтобы Excel интерпретировал кэшированные современные ошибки, сохраняя более высокие запрошенные значения и оставляя in-memory свойство неизменным
FullCalcOnLoad / ForceFullCalc / CalcCompleted / CalcOnSave / FullPrecisionУправляет полным пересчётом, завершением кэшированных вычислений, пересчётом перед сохранением и политикой точности Каждое значение, отличное от принятого по умолчанию, независимо выдаёт и проводит через запись/чтение соответствующий <calcPr> attribute
ConcurrentCalc / ConcurrentManualCountУправляет параллельным вычислением книги и ручной подсказкой количества рабочих потоков ConcurrentManualCount is clamped to zero or greater
SourceFormatСообщает семейство пакетов, загруженное последним успешным Open или OpenODS, возвращая xlsxOpenXMLWorkbook для книг и шаблонов OOXML, включая XLTX и XLTM, xlsxOpenDocumentSpreadsheet для ODS и xlsxExcelBinaryWorkbook для поддерживаемого подмножества XLSB «значения и стили»
Новая созданная книга сообщает xlsxOpenXMLWorkbook, пока файл не открыт, и это свойство не выбирает формат вывода
IndexedColor[Index]значение ARGB для заданного слота (0..63) индексированной палитры цветов OOXML. Чтение возвращает пользовательское переопределение, если оно задано, иначе встроенное значение OOXML по умолчанию (XlsxDefaultIndexedPalette) Writing overrides slot N; SaveAs then emits a full <indexedColors> block with all 64 slots
ResolveIndexedColorClassifies public color indexes, BIFF icv значения или индексированные цвета OOXML и вычисляет нормализованное значение ARGB, когда его поставляет палитра книги или явный callback системного цвета
NearestIndexedColorВозвращает ближайшую физическую запись палитры через общий кэшированный OKLab-матчер, не меняя палитру и состояние книги
ScanIndexedColorUsageВозвращает детерминированную опись 56 слотов с цветами палитры, количеством определений и ссылок, видами потребителей и блокировками сохранения, не материализуя ячейки и не меняя состояние книги
BuildBiffPalettePlanВозвращает план палитры BIFF на 56 слотов без побочных эффектов: заблокированные слоты, агрегированные true-color цели, детерминированные отображения, идентичность источника и взвешенную статистику ошибок OKLab
ApplyBiffPalettePlanПроверяет идентичность источника, метаданные слотов, блокировки и непрозрачные цели, затем атомарно применяет все изменившиеся записи палитры и один раз перестраивает кэшированный матчер
HasCustomIndexedColor / CustomIndexedColorCount / ResetIndexedColorsHasCustomIndexedColor(N) returns True when slot N was explicitly overridden CustomIndexedColorCount возвращает количество переопределённых слотов (0 = нет <colors> block emitted by SaveAs) ResetIndexedColors Техническое описание и идентификаторы: SaveAs
ExternalLinksТехническое описание и идентификаторы: HotXLS TXLSXExternalLink entry holds a Target URL and a SheetNames list. SaveAs emits the <externalReferences> block in xl/workbook.xml and the corresponding xl/externalLinks/ части. Open проводит через цикл Target и SheetNames; кэшированные значения ячеек внутри <sheetDataSet> are not preserved
CreateWorkspaceWorkbookReturns the revocable IXLSWorkspaceWorkbook адаптер для этой книги Адаптер сохраняет идентичность источника и поколение книги и отключается до уничтожения модели книги
ExternalWorkspaceПотокобезопасный реестр с сохранением путей, используемый живым вычислением внешних формул Точным идентичностям и алиасам отдаётся предпочтение, неоднозначный поиск по имени файла отклоняется, а нормализация идентичности не выполняет неявного доступа к файлам или сети См. Live workbook workspace
RegisterExternalWorkbook / UnregisterExternalWorkbookCompatibility facade over ExternalWorkspace Техническое описание и идентификаторы: URL, SaveAs, SheetNames

Пример

Запись и повторное открытие рабочей книги
uses lxHandleX;

var
  wb: TXLSXWorkbook;
begin
  wb := TXLSXWorkbook.Create;
  try
    wb.Sheets.Add('Demo').Cells.Item[1, 1].Value := 'Hello';
    wb.SaveAs('demo.xlsx');

    wb.Open('demo.xlsx');
    ShowMessage(wb.Sheets[0].Cells.Item[1, 1].Value);
  finally
    wb.Free;
  end;
end;
    

См. также