Метод 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;