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

Метод CreateLoadedCellCursor

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

Синтаксис

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

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

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

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

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

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

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

Одне лише успадковане форматування не матеріалізує та не видає координату порожньої комірки

Поля знімка

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

Рядки та значення Variant у TXLSLoadedCellSnapshot належать знімку й не розкривають внутрішні об'єкти комірок

Для комірок із формулами Value слід звичайній семантиці доступу до значень класичної книги, зокрема обчисленню за потреби

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

Стан та інвалідація

State дорівнює 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;

Див. також