Метод CreateLoadedCellCursor
Создаёт курсор последовательного перебора сохранённых ячеек в загруженной книге классического XLS с возможностью включить пустые ячейки с собственным оформлением
Синтаксис
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Порядок и стоимость обхода
Курсор обходит листы в порядке коллекции, затем ячейки по возрастанию строки и столбца
SheetIndex, Rowи Col — публичные координаты с нумерацией от единицы
Обход следует непосредственно по выделенным ветвям классического разреженного хранилища, поэтому состояние курсора остаётся постоянным и не выделяет массивы, размер которых равен пределам строк или столбцов листа
Перегрузка без параметров пропускает пустые ячейки и сохраняет существующий контракт обхода значений и формул
Передайте True , чтобы включить сохранённые пустые ячейки, чей XF ячейки отличается от унаследованного формата строки, столбца или листа
Одно лишь унаследованное форматирование не материализует и не выдаёт координату пустой ячейки
Поля снимка
| Поле | Значение |
|---|---|
SheetIndex / SheetName | Идентичность владеющего листа на момент захвата |
Row / Col | Координаты ячейки с нумерацией от единицы |
StyleIndex | Индекс стиля классического XF |
Kind (TXLSLoadedCellKind) | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormulaили xlckBlank |
Value | Собственное значение Variant, захваченное для текущей ячейки |
Formula | Текст формулы для ячеек с формулами, иначе пустая строка |
Строки и значения Variant в TXLSLoadedCellSnapshot принадлежат снимку и не раскрывают внутренние объекты ячеек
Для ячеек с формулами Value следует обычной семантике доступа к значениям классической книги, включая вычисление при необходимости
Для xlckBlank, Value равен Unassigned, Formula пуст, а StyleIndex идентифицирует сохранённый XF ячейки
Состояние и инвалидация
State (type TXLSLoadedCellCursorStateравен xlccBeforeFirst до первого успешного MoveNext, xlccActive , пока доступен Current , и xlccEof после завершения обхода
Чтение Current до первой ячейки или после EOF вызывает EXLSLoadedCellCursorState
Создание или удаление сохранённых ячеек, добавление, удаление или перемещение листов либо замена модели книги делают курсор недействительным
Следующий вызов MoveNext или Current вызывает EXLSLoadedCellCursorInvalidated
Изменение значения, формулы или формата существующей ячейки не делает курсор недействительным, и уже захваченный снимок остаётся неизменным
Пример
Cursor := Workbook.CreateLoadedCellCursor;
while Cursor.MoveNext do
begin
Cell := Cursor.Current;
Memo1.Lines.Add(Format('%s!R%dC%d = %s',
[Cell.SheetName, Cell.Row, Cell.Col, VarToStr(Cell.Value)]));
end;