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

Генерация на структурата на заредената работна книга

Структурните генерации позволяват на четещия код да задържа евтини моментни снимки и да отхвърля обхождане, след като топологията на работната книга, от която то зависи, е променена

Източници на генерации

МашинаГенерация на клетъчното хранилищеГенерация на колекцията листове
Classic 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

Граница на конкурентността

Проверките на генерациите осигуряват само откриване с незабавен отказ и не правят едновременната мутация и обхождане на работната книга безопасни за нишки

Вижте също