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

Дополнительные члены классического XLS API

Эта страница охватывает публичные члены классического XLS API, принадлежащие lxHandle, lxDataToXLS и lxGridToXLS

Свойства вычисления IXLSWorkbook

property CalculationMode: LongWord;
property FormulaArrayMemoryLimit: Int64;
property EnableIteration: Boolean;
property MaxIterations: LongWord;
property MaxIterationChange: Double;
property RecalcOnSave: Boolean;
property UseFullPrecision: Boolean;
      
CalculationMode Управляет режимом вычислений книги, сохраняемым вместе с файлом
FormulaArrayMemoryLimit Ограничивает память, выделяемую под генерируемые формулы массивов, такие как MUNIT; по умолчанию 64 MiB; значения меньше размера одного элемента Double приводятся к этому минимуму
EnableIteration Включает итеративные вычисления для циклических формул
MaxIterations Максимальное число проходов Гаусса–Зейделя для каждой компоненты сильной связности с циклическими ссылками
MaxIterationChange Предельная числовая дельта, при которой итерации компоненты с циклическими ссылками останавливаются
RecalcOnSave Запрашивает пересчёт книги при сохранении файла Excel
UseFullPrecision Сохраняет полную точность формул; при отключении кэши формул и таблиц подстановки What-If округляются до фактически отображаемой числовой точности, прежде чем зависимые ячейки их прочитают

Проверка ввода формул

property IXLSWorkbook.FormulaEntryPolicy: TXLSFormulaEntryPolicy;
function TXLSWorksheet.ValidateFormulaEntry(Row, Col: Integer;
  const Formula: WideString): TXLSFormulaEntryValidationResult;
      
Единый контракт проверки классифицирует пустой ввод, неизвестные функции, неизвестные имена, синтаксические ошибки, недопустимые координаты и формулы, которые невозможно представить средствами классического XLS, не изменяя состояние листа; см. политику проверки ввода формул

Калибровка рендеринга IXLSWorkbook

property RenderCalibration: TXLSRenderCalibration;
function CaptureRenderCalibration: TXLSRenderCalibration;
procedure ResetRenderCalibration;
function CreateRenderGeometry(ABackend: TXLSRenderGeometryBackend;
  ACacheCapacity: Integer = 4096): IXLSRenderGeometry;
      
Присваивание всей записи проверяет все шесть полей до изменения книги, CaptureRenderCalibration возвращает независимый снимок значений для одной операции измерения или экспорта, а ResetRenderCalibration восстанавливает стандартные значения 1/1/1/1/100/96
Эта настройка существует только во время выполнения: она не сериализуется в XLS-файл и не изменяет высоты строк и ширины столбцов листа
CreateRenderGeometry копирует текущую калибровку в сервис, принадлежащий конкретной операции, и привязывает идентичность его кэша к текущему поколению книги и выбранному бэкенду; последующие изменения калибровки книги не могут повлиять на уже созданный сервис
AutoFit диапазона и каждый вызов TXLSPaginationModel.Build захватывают калибровку книги один раз; AutoFit — единственный потребитель, который намеренно записывает подобранные размеры, тогда как разбиение на страницы сохраняет все имеющиеся высоты строк и ширины столбцов

Свойства документа IXLSWorkbook

property Title: WideString;
property Subject: WideString;
property Author: WideString;
property Keywords: WideString;
property Comments: WideString;
property Company: WideString;
property Manager: WideString;
      
Эти свойства читают и записывают поля сводной информации рабочей книги, сохранённые вместе с классическим XLS-файлом

Метод Close IXLSWorkbook

function Close: Integer;
      
Закрывает объект рабочей книги и освобождает содержимое, принадлежащее рабочей книге, которое удерживается классической объектной моделью XLS

Свойства загрузки только метаданных IXLSWorkbook

property MetadataOnly: Boolean;
property SelectedSheets: TStringList;
property IncompleteLoad: Boolean;
      
MetadataOnly Если установлено до Open, читаются только метаданные книги и дескрипторы листов, а данные ячеек пропускаются
SelectedSheets Список имён листов, загружаемых при открытии книги; пустой список загружает все листы
IncompleteLoad Равно True после Open, если данные ячеек были пропущены из-за использования MetadataOnly или SelectedSheets
Книгу, открытую с MetadataOnly или непустым SelectedSheets, нельзя сохранить; Save вызывает ошибку, пока книга не будет открыта заново без этих опций

Свёрнутое состояние TXLSColumnInfo

property TXLSWorksheet._ColumnInfo: TXLSColumnInfoList;
property TXLSColumnInfo.Collapsed: Boolean;
property TXLSRowInfo.Collapsed: Boolean;
property TXLSColumnInfoList.Collapsed[Index: Integer]: Boolean;
      
Collapsed открывает доступ к маркеру структуры столбцов BIFF независимо от Hidden и OutlineLevel. Индекс в списке — это индекс столбца классического XLS с отсчётом от нуля. Отсутствующие столбцы читаются как False, а присваивание False отсутствующему столбцу не выделяет метаданные. Копирование форматов столбцов, копирование листов и циклы «сохранение — повторное открытие» сохраняют этот маркер
Базовые аксессоры хранилища открыты для низкоуровневого осмотра книги. TXLSRowInfo сообщает MinCol и MaxCol (охватываемый диапазон столбцов с отсчётом от 1), CustomHeight и CustomFormat (сохранена ли явная высота или индекс XF) и XFIndexSet; TXLSColumnInfo.isEqual сравнивает две записи метаданных столбцов поле за полем
TXLSColumnInfoList предоставляет ColCount, MinCol, MaxCol, StdWidth и MaxOutlineLevel для диагностики границ и ширины по умолчанию; CalcMaxOutLineLevel пересчитывает кэшированный максимальный уровень структуры после прямого изменения метаданных; CopyColFormat клонирует одну запись столбца на другой индекс; DeleteCol удаляет запись; а FindNextColToStore обходит сохранённые записи для писателей записей BIFF COLINFO, сообщая следующий диапазон в out-параметрах MinCol / MaxCol

Методы узлов структуры TXLSWorksheet

function TryGetOutlineNode(AAxis: TXLSOutlineAxis; ANodeIndex: Integer; out ANode: TXLSOutlineNode): Boolean;
function SetOutlineNodeCollapsed(AAxis: TXLSOutlineAxis; ANodeIndex: Integer; ACollapsed: Boolean; AChildMode: TXLSOutlineChildMode = xocPreserve): Boolean;
procedure SetOutlineDisplayLevel(AAxis: TXLSOutlineAxis; ADisplayLevel: Integer; AChildMode: TXLSOutlineChildMode = xocPreserve);
      
Эти методы адаптируют классические метаданные строк и столбцов к общей разреженной модели структуры, находят запрошенный итоговый узел по его направлению в структуре и применяют сжатые изменения скрытия и сворачивания, не затрагивая неиспользуемые координаты листа
ANodeIndex — физическая итоговая строка или столбец с отсчётом от 1, ADisplayLevel следует соглашению кнопок структуры с отсчётом от 1, а xocPreserve по умолчанию сохраняет независимость маркеров сворачивания вложенных дочерних узлов
Поля узлов, режимы дочерних узлов, примеры и гарантии сложности см. в геометрии разреженной структуры

Методы панелей и заголовков печати TXLSWorksheet

function ThawPanes(Y, X: Single; RowTop, ColLeft: Word): Integer;
function SplitPanes(Width, Height: Single): Integer;
function UnsplitPanes: Integer;
function GetSelectedAreas(APane: TXLSPanePosition; out ActiveAreaIndex: Integer): TXLSSelectedAreas;
function SelectAreas(APane: TXLSPanePosition; const Areas: array of WideString; ActiveAreaIndex: Integer = 0): Boolean;
function TryGetWindowScroll(APane: TXLSPanePosition; out ARow, ACol: Integer): Boolean;
function ScrollWindow(APane: TXLSPanePosition; ARow, ACol: Integer): Boolean;
function RepeatRows(FirstRow, LastRow: Word): Integer;
function RepeatColumns(FirstCol, LastCol: Word): Integer;
      
ThawPanes, SplitPanes и UnsplitPanes управляют состоянием разделённых панелей, а RepeatRows и RepeatColumns задают строки или столбцы заголовков печати для листа
GetSelectedAreas и перегрузка SelectAreas, принимающая панель первым параметром, реализуют общий контракт выделения логических панелей, описанный в выделении панелей листа
Последовательные записи выделения BIFF для одной панели образуют единую логическую группу; изменённые группы записываются порциями не более чем из 1369 областей, а копии листа сохраняют каждую группу панелей
Структурные изменения целых строк и столбцов перестраивают каждую допустимую группу панелей, сохраняя порядок уцелевших областей и идентичность активной области, с детерминированными запасными вариантами для последующей, предыдущей и граничной ячеек
Некорректные или противоречивые записи выделения остаются непрозрачными, воспроизводятся байт в байт при сохранении и сообщают диагностику xlsDiagnosticSelectionRecordInvalid вместо предоставления частично доверенного типизированного состояния
TryGetWindowScroll и ScrollWindow реализуют общий контракт прокрутки четырёх панелей с отсчётом от 1, отображая верхнюю и левую оси на Window2, а нижнюю и правую — на Pane

Типизированные методы проверки данных TXLSWorksheet

function AddWholeNumberValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddDecimalValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddDateValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddTimeValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddTextLengthValidation(ARange: WideString; AOp: TXLSDvOperator; const AFormula1: WideString; const AFormula2: WideString = ''): TDataValidation;
function AddCustomValidation(ARange: WideString; const AFormula: WideString): TDataValidation;
      
Каждый вспомогательный метод создаёт типизированное правило проверки данных для ARange и возвращает созданный экземпляр TDataValidation, чтобы можно было настроить параметры подсказки, ошибки и обработки пустых значений

Члены сводных таблиц TXLSWorksheet

property PivotTables: TXLSPivotTables;
function AddPivotTable(const SourceRangeA1: WideString; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable;
function PivotSetDataFieldFormat(DataField: TXLSPivotDataField; const FormatStr: WideString): Word;
      
Используйте AddPivotTable для создания типизированной сводной таблицы из исходного диапазона, затем используйте PivotTables и PivotSetDataFieldFormat для проверки или форматирования созданной модели. См. API сводных таблиц классического XLS

Члены формул массива и границ IXLSRange

function SetArrayFormula(const Formula: WideString): Integer;
function XFIndex: Integer;
property FirstRow: Word;
property LastRow: Word;
property FirstCol: Byte;
property LastCol: Byte;
      
SetArrayFormula присваивает формулу массива диапазону. FirstRow, LastRow, FirstCol и LastCol предоставляют доступ к сохранённым границам диапазона (отсчёт с 1), а XFIndex возвращает действующий индекс формата классического XLS для диапазона

Вспомогательные функции передачи IXLSRange

procedure PasteFrom(SrcRange: TXLSRange; PasteMode: LongWord; CopyMode: Boolean);
procedure ShiftTo(Row: Word; Col: Byte);
procedure ExtendRange;
procedure ContractRange;
      
PasteFrom применяет содержимое ячеек из другого классического XLS-диапазона с использованием выбранного режима вставки. ShiftTo перемещает объект диапазона, а ExtendRange и ContractRange корректируют сохранённый прямоугольник перед операциями над диапазоном, которым требуются расширенные или нормализованные границы

Интерфейсы диапазонов строк и столбцов IXLS

interface IXLSRowsRange = interface(IXLSRange)
  property Item[Row: Integer]: IXLSRowRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = False);

interface IXLSRowRange = interface(IXLSRange)
  property Item[Col: Integer]: IXLSColRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = False);

interface IXLSColsRange = interface(IXLSRange)
  property Item[Col: Integer]: IXLSColRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = True);
  procedure Group(Rows: Boolean = False);
  procedure UnGroup(Rows: Boolean = False);
  property OutlineLevel: Integer;

interface IXLSColRange = interface(IXLSRange)
  property Item[Row: Integer]: IXLSRowRange;
  property Hidden: OleVariant;
  property Count: LongWord;
  procedure AutoFit(Columns: Boolean = True);
  procedure Group(Rows: Boolean = False);
  procedure UnGroup(Rows: Boolean = False);
  property OutlineLevel: Integer;
      
IXLSRowsRange, IXLSRowRange, IXLSColsRange и IXLSColRange возвращаются методами IXLSRange.Rows, IXLSRange.Columns, IXLSRange.EntireRow и IXLSRange.EntireColumn. Они сохраняют стандартный интерфейс редактирования IXLSRange, добавляя индексированный доступ к строкам или столбцам, управление видимостью, счётчики, автоподбор ширины/высоты и группировку структуры там, где это поддерживается направлением диапазона
property DisplayText: WideString;
      
DisplayText читает или изменяет видимый текст, отображаемый Excel для классической XLS-гиперссылки, отдельно от целевого адреса и всплывающей подсказки

Свойства сопоставления ID TXLSWorksheets

property IndexByID[SheetID: Integer]: Integer;
property IDByName[SheetName: WideString]: Integer;
property NameByID[SheetID: Integer]: WideString;
      
Эти свойства только для чтения обеспечивают сопоставление между внутренним идентификатором листа, текущим индексом листа и видимым именем листа. Они полезны при сохранении формул, определённых имён или записей, которые ссылаются на листы по сохранённым идентификаторам, а не по текущему порядку вкладок

Свойство SheetTypeRaw TXLSWorksheet

property SheetTypeRaw: Byte;
      
SheetTypeRaw сохраняет необработанное значение BoundSheet8.dt классического XLS при загрузке и сохранении рабочих книг, чтобы записи о типах листов — макросах, VBA, рабочих листах, диалогах и других — могли сохраняться без приведения к стандартной вкладке рабочего листа

Расширенные свойства печати IXLSPageSetup

property PrintNotesAtEnd: Boolean;
property UseFirstPageNumber: Boolean;
property FirstPageNumber: Integer;
property PrintCellErrors: LongWord;
property PrintResolution: LongWord;
property PrintVResolution: LongWord;
property Copies: LongWord;
property HasSetupRecord: Boolean; read only
property PrinterSettingsInitialized: Boolean; read only
property PrinterDriverData: TBytes;
property HasPrinterDriverData: Boolean; read only
procedure ClearPrinterDriverData;
      
Эти свойства сохраняют расширенные параметры настройки страницы: примечания, напечатанные в конце, пользовательский номер первой страницы, отображение ошибок ячеек при печати, разрешение принтера и количество копий
HasSetupRecord сообщает, содержит ли загруженный классический XLS-лист запись BIFF Setup, а PrinterSettingsInitialized — определены ли этой записью размер бумаги, масштаб, ориентация, разрешение и количество копий
Сохранение нетронутого листа сохраняет как отсутствие записи Setup, так и существующую запись байт в байт; изменение поля настройки страницы при необходимости создаёт запись, а изменение поля, зависящего от принтера, инициализирует настройки принтера
PrinterDriverData читает или заменяет непрозрачные данные драйвера принтера в записи BIFF PLS, HasPrinterDriverData отличает случай отсутствия данных, а ClearPrinterDriverData удаляет их, не меняя типизированные поля настройки страницы
Массивы байтов в геттерах и сеттерах копируются, поэтому вызывающая сторона и копия листа владеют ими независимо; классические полезные данные должны включать обязательный двухбайтовый зарезервированный префикс и не могут превышать 1 MiB
SaveXLSWorkbookAsXLSX переносит типизированные значения настройки страницы и непрозрачные данные драйвера принтера в модель XLSX независимо друг от друга; типизированные стандартные поля остаются приоритетными, если приватные байты драйвера содержат дублирующие настройки принтера по умолчанию

Свойства кодировки шрифта IXLSFont

property CharSet: Byte;
property Family: Byte;
      
CharSet и Family предоставляют доступ к байтам кодировки и семейства шрифта классического XLS для вызывающих сторон, которым необходимо сохранять метаданные шрифта, специфичные для локали

Методы Abort TDataToXLS и TGridToXLS

procedure TDataToXLS.Abort;
procedure TGridToXLS.Abort;
      
Вызывайте Abort из обработчиков событий экспорта, когда выполняющийся экспорт набора данных или сетки необходимо прервать до завершения

Вспомогательные функции классических ссылок XLS

function GetCellRef(Cell: String; var Row, Col: Word): Integer;
function GetCellRange(CellRange: String; var StartRow, StartCol, EndRow, EndCol: Word): Integer;
function EncodeCellRef(Row, Col: Word): String;
function EncodeCellRange(StartRow, StartCol, EndRow, EndCol: Word): String;
function Width2Excel(Value: Single): Word;
function Excel2Width(Value: Word): Single;
function Height2Excel(Value: Single): Word;
function Excel2Height(Value: Word): Single;
function ColIndexToColName(Index: Integer): String;
function ColNameToColIndex(Name: String): Integer;
      
Эти вспомогательные функции преобразуют классические ссылки A1, диапазоны, метки столбцов, размеры строк или столбцов и единицы хранения Excel, используемые классической объектной моделью XLS