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

Метод CreateLoadedCellCursor

Створює курсор послідовного перебору збережених комірок у завантаженій книзі XLSX з можливістю включити порожні комірки з власним оформленням

Синтаксис

function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
function CreateLoadedCellCursor(
  AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;

Порядок і вартість обходу

Курсор обходить аркуші в порядку колекції, потім комірки за зростанням рядка та стовпця

SheetIndex, Row і Col — публічні координати з нумерацією від одиниці

Матеріалізовані аркуші читаються безпосередньо з їхніх виділених розріджених блоків по 256 рядків без побудови відсортованого списку комірок

Упаковані аркуші читаються безпосередньо через ітератор упакованого сховища та залишаються упакованими після обходу

Стан курсора сталий щодо розміру книги і не виділяє масиви, розмір яких дорівнює межам рядків чи стовпців XLSX

Перевантаження без параметрів пропускає порожні комірки, що відрізняються лише стилем, збережені заповнювачі Empty і збережені заповнювачі Null

Передайте True, щоб включити координати порожніх комірок з незалежним оформленням з матеріалізованого чи упакованого сховища без матеріалізації упакованих комірок

Неоформлені заповнювачі Empty і Null залишаються виключеними в обох режимах

Поля знімка

ПолеЗначення
SheetIndex / SheetNameІдентичність аркуша-власника на момент захоплення
Row / ColКоординати комірки з нумерацією від одиниці
StyleIndexІндекс формату комірки XLSX, захоплений з матеріалізованого чи упакованого сховища
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError або xlckBlank
ValueВласне значення Variant, захоплене для поточної комірки
FormulaТекст формули для комірок із формулами, інакше порожній рядок

Рядки та значення Variant у TXLSLoadedCellSnapshot належать знімку й не розкривають внутрішні вказівники комірок чи упакованого сховища

Для комірок із формулами XLSX Value — поточне збережене кешоване значення, і обхід не перераховує формулу

Для xlckBlank Value дорівнює Unassigned, Formula порожній, а StyleIndex ідентифікує збережений формат комірки

Стан, інвалідація та час життя

State дорівнює xlccBeforeFirst до першого успішного MoveNext, xlccActive, поки доступний Current, і xlccEof після завершення обходу

Читання Current до першої комірки або після EOF викликає EXLSLoadedCellCursorState

Створення чи вилучення збережених комірок, матеріалізація упакованого сховища, явна перебудова індексів або додавання, вилучення, переміщення чи очищення аркушів роблять курсор недійсним

Наступний виклик MoveNext чи Current викликає EXLSLoadedCellCursorInvalidated

Зміна значення, формули чи формату наявної комірки не робить курсор недійсним, а вже захоплений знімок залишається незмінним

Звільнення книги до курсора також викликає 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;

Див. також