Метод 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, захоплений з матеріалізованого чи упакованого сховища |
Kind | xlckText, 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;