HotXLS 문서

로드된 통합 문서 구조 세대

구조 세대를 사용하면 리더가 저비용 스냅샷을 유지하고 자신이 의존하는 통합 문서 토폴로지가 변경된 후의 순회를 거부할 수 있습니다

세대 소스

엔진셀 저장소 세대워크시트 컬렉션 세대
클래식 XLSTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration 또는 TXLSXCells.StructureGenerationTXLSXSheets.StructureGeneration

각 속성은 읽기 전용 UInt64 값이며, 변경되는 정확한 양은 계약의 대상이 아닙니다

무효화하는 작업

저장된 셀 생성, 제거 또는 지우기는 토폴로지가 실제로 변경될 때 셀 저장소 세대를 변경합니다

행 또는 열 삽입과 삭제, 좌표 이동, 패킹된 추가 또는 실체화, 명시적인 셀 인덱스 재빌드도 셀 저장소 순회 상태를 무효화합니다

워크시트 추가, 삭제, 이동 또는 지우기는 컬렉션이 실제로 변경될 때 워크시트 컬렉션 세대를 변경합니다

무효화하지 않는 작업

기존 셀의 값, 수식, 캐시된 값 또는 서식을 변경해도 해당 셀 저장소 세대는 변경되지 않습니다

워크시트 이름 바꾸기나 활성화는 워크시트 컬렉션 세대를 변경하지 않으며, 아무 효과 없는 이동, 없는 항목의 삭제 또는 이미 빈 컬렉션의 지우기는 현재 세대를 유지합니다

유효성 검사

이전 세대를 위해 만들어진 순회 상태를 진행하거나 읽기 전에 XlsValidateStructureGeneration을 호출하십시오

불일치 시 EXLSLoadedCellCursorInvalidated가 발생하므로 호출자는 구조적 무효화를 데이터 또는 서식 오류와 구별할 수 있습니다

ExpectedGeneration := Worksheet.CellStructureGeneration;

{ Read or retain traversal state }

XlsValidateStructureGeneration(
  ExpectedGeneration,
  Worksheet.CellStructureGeneration);

클래식 통합 문서 커서

IXLSWorkbook.CreateLoadedCellCursor는 클래식 통합 문서의 집계 세대를 캡처하고 모든 MoveNext 및 Current 호출 전에 이를 검증합니다

커서는 할당된 스파스 저장소 분기를 직접 순회하며 상수 커서 상태로 소유된 TXLSLoadedCellSnapshot 값을 반환합니다

부울 오버로드는 독립적으로 스타일이 지정된 저장된 빈 셀을 포함할지 여부를 고정합니다. 상속된 행, 열, 워크시트 서식은 빈 커서 항목을 만들지 않습니다

XLSX 통합 문서 커서

TXLSXWorkbook.CreateLoadedCellCursor는 통합 문서 수명 리스와 모든 워크시트 셀 저장소 및 워크시트 컬렉션이 공유하는 집계 토폴로지 세대를 캡처합니다

실체화된 경로는 스파스 행 블록을 직접 읽고, 패킹된 경로는 셀을 실체화하거나 스냅샷에 내부 포인터를 유지하지 않고 패킹된 반복기를 재사용합니다

부울 오버로드는 어느 저장소 표현에서든 스타일만 있는 저장된 빈 셀을 포함할 수 있으며, 스타일 없는 Empty 및 Null 자리 표시자는 계속 제외됩니다

통합 문서를 해제하면 워크시트 저장소가 해제되기 전에 리스가 무효화되므로 이후의 커서 접근은 EXLSLoadedCellCursorInvalidated를 발생시킵니다

동시성 경계

세대 검사는 fail-fast 감지만 제공하며 동시 통합 문서 변경과 순회를 스레드로부터 안전하게 만들지 않습니다

참고 항목