Документация на 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;

Вижте също