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

Класс TXLSForwardReader

TXLSForwardReader представляет одну проецированную поверхность на колбэках для ввода классического XLS, современного XLSX, ODS, CSV и TSV без построения полной объектной модели книги; он адаптирует те же бэкенды курсора строк, что использует TXLSRowCursor предоставляет единую проецируемую поверхность на основе обратных вызовов для классических файлов XLS, современных XLSX, CSV и TSV без построения полной объектной модели книги

Формат входных данных

TXLSForwardFormat выбирает автоматическое определение или принудительный разбор XLS, XLSX, CSV или TSV

ReadFile открывает именованный источник, а ReadStream читает с текущей позиции потока вызывающего кода, восстанавливая эту позицию при возврате

Проекция и границы строк

IncludeColumn добавляет столбец с нулевым отсчётом в набор проекции с постоянным временем доступа, ClearColumnProjection восстанавливает вывод всех столбцов, а HasColumnProjection сообщает, активна ли проекция

FirstRow и LastRow применяют границы строк с отсчётом от 1 до диспетчеризации обратных вызовов, позволяя анализаторам остановиться после запрошенного интервала

Обратные вызовы и преобразование значений

OnSheetПолучает имя каждого листа и может пропустить лист или прервать всё чтение
OnCellПолучает строку, столбец, индекс стиля, нормализованный тип, исходное значение и текст формулы для каждой проецируемой ячейки
IncludeFormulaTextИспользует числовые форматы книги для определения значений даты и времени
DetectDatesПреобразует поля CSV и TSV в поддерживаемые скалярные типы, когда это однозначно
DetectTextTypesСохраняет форматированные фрагменты и фонетические данные там, где формат источника их поддерживает
PreserveRichTextПереопределяет разделитель текстовых полей, когда определение формата не подходит
ValueSeparatorПереопределяет разделитель текстовых полей, когда автоопределение формата неприменимо

HasFormula is false for ordinary values, while FormulaTextAvailable is true only when Formula содержит надёжный текст; классический XLS сообщает кэшированные результаты формул с недоступным текстом формулы, поскольку прямой путь не декомпилирует токены BIFF

Состояние завершения

CellCount reports dispatched cells and Aborted отличает отмену со стороны вызывающего от нормального завершения

ClassicBytesRead сообщает суммарные байты, потреблённые парсером классического XLS (BIFF), а ClassicPeakBufferedBytes пиковые буферизованные байты, которые он держал единовременно; оба значения — диагностические и только для чтения, для пути классического XLS

PeakRowBufferedBytes сообщает наибольший оценочный рабочий набор логической строки, удерживаемый общим бэкендом, а SheetPassesStarted считает проходы листов, ставшие активными; лист, отклонённый OnSheet не открывает свою часть листа и не увеличивает счётчик

Sheet indexes delivered through OnSheet сообщает количество переданных ячеек, а OnCell отличает отмену вызывающим кодом от нормального завершения

Пример

Reader := TXLSForwardReader.Create;
try
  Reader.FirstRow := 2;
  Reader.IncludeColumn(1);
  Reader.IncludeColumn(5);
  Reader.OnSheet := ReadSheet;
  Reader.OnCell := ReadCell;
  Reader.ReadFile('large-input.xlsx', xffAuto);
finally
  Reader.Free;
end;

Выбор потокового API

Используйте TXLSForwardReader , когда один путь приложения должен принимать несколько форматов, TXLSDirectReader — для специфичного для XLSX макета, форматированного текста и параллельных событий листа, а TXLSRowCursor — для итерации строк XLSX в режиме извлечения

См. также