HotXLS 문서

CreateLoadedCellCursor 메서드

로드된 XLSX 통합 문서에 저장된 셀에 대한 풀 커서를, 독립적으로 스타일이 지정된 빈 셀을 포함하는 옵션과 함께 만듭니다

구문

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

순회 순서 및 비용

커서는 워크시트를 컬렉션 순서로 방문한 다음 셀을 행과 열의 오름차순으로 방문합니다

SheetIndex, Row 및 Col은 1부터 시작하는 공용 좌표입니다

실체화된 워크시트는 정렬된 셀 목록을 만들지 않고 할당된 256행 스파스 블록에서 직접 읽습니다

패킹된 워크시트는 패킹된 저장소 반복기를 통해 직접 읽히며 순회 후에도 패킹된 상태로 유지됩니다

커서 상태는 통합 문서 크기에 대해 상수이며 XLSX 행 또는 열 한도 크기의 배열을 할당하지 않습니다

매개변수 없는 오버로드는 스타일만 있는 빈 셀, 저장된 Empty 자리 표시자 및 저장된 Null 자리 표시자를 건너뜁니다

패킹된 셀을 실체화하지 않고 실체화 또는 패킹된 저장소에서 독립적으로 스타일이 지정된 빈 좌표를 포함하려면 True를 전달합니다

스타일 없는 Empty 및 Null 자리 표시자는 두 모드 모두에서 계속 제외됩니다

스냅샷 필드

필드의미
SheetIndex / SheetName캡처 시점의 소유 워크시트 식별 정보
Row / Col1부터 시작하는 셀 좌표
StyleIndex실체화 또는 패킹된 저장소에서 캡처된 XLSX 셀 서식 인덱스
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError 또는 xlckBlank
Value현재 셀에 대해 캡처된 소유 Variant 값
Formula수식 셀의 경우 수식 텍스트, 그 외에는 빈 문자열

TXLSLoadedCellSnapshot의 문자열과 Variant는 소유된 값이며 내부 셀이나 패킹된 저장소 포인터를 노출하지 않습니다

XLSX 수식 셀의 경우 Value는 현재 저장된 캐시 값이며 순회가 수식을 재계산하지 않습니다

xlckBlank의 경우 Value는 Unassigned이고 Formula는 비어 있으며, StyleIndex가 저장된 셀 서식을 식별합니다

상태, 무효화 및 수명

State는 첫 번째 MoveNext가 성공할 때까지는 xlccBeforeFirst, Current를 사용할 수 있는 동안은 xlccActive, 순회가 완료된 후에는 xlccEof입니다

첫 번째 셀 이전이나 EOF 이후에 Current를 읽으면 EXLSLoadedCellCursorState가 발생합니다

저장된 셀 생성 또는 삭제, 패킹된 저장소 실체화, 명시적인 인덱스 재빌드 또는 워크시트 추가, 삭제, 이동, 지우기는 커서를 무효화합니다

이후의 MoveNext 또는 Current 호출은 EXLSLoadedCellCursorInvalidated를 발생시킵니다

기존 셀의 값, 수식 또는 서식을 변경해도 커서는 무효화되지 않으며, 이미 캡처된 스냅샷은 변경되지 않고 유지됩니다

커서보다 먼저 통합 문서를 해제해도 커서에 허상 통합 문서 포인터를 남기는 대신 EXLSLoadedCellCursorInvalidated가 발생합니다

세대 검증은 fail-fast 감지이며 동시 변경과 순회를 스레드로부터 안전하게 만들지 않습니다

예제

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;

참고 항목