HotXLS-dokumentation

Generering av inläst arbetsboksstruktur

Strukturgenerationer låter en läsare behålla billiga ögonblicksbilder och avvisa traversering efter att arbetsbokstopologin den är beroende av har ändrats

Genereringskällor

MotorCellagrets genereringKalkylbladssamlingsgenerering
Classic XLSTXLSWorksheet.CellStructureGenerationTXLSWorksheets.StructureGeneration
XLSXTXLSXWorksheet.CellStructureGeneration eller TXLSXCells.StructureGenerationTXLSXSheets.StructureGeneration

Varje egenskap är ett skrivskyddat UInt64-värde och den exakta storleken på dess ändring är inte kontraktuell

Ogiltigförklarande åtgärder

Att skapa, ta bort eller tömma lagrade celler ändrar cellagrets generering när topologin faktiskt ändras

Infogning och borttagning av rader eller kolumner, koordinatflyttning, tilläggning till eller materialisering av packad lagring samt explicita ombyggnader av cellindex ogiltigförklarar också traverseringstillståndet för cellagret

Att lägga till, ta bort, flytta eller tömma kalkylblad ändrar kalkylbladssamlingsgenereringen när samlingen faktiskt ändras

Åtgärder som inte ogiltigförklarar

Att ändra värdet, formeln, det cachade värdet eller formatet för en befintlig cell ändrar inte cellagrets generering för cellen

Att byta namn på eller aktivera ett kalkylblad ändrar inte kalkylbladssamlingsgenereringen, och no-op-flyttningar, saknade borttagningar eller tömning av en redan tom samling behåller den aktuella generationen

Validering

Anropa XlsValidateStructureGeneration innan traverseringstillstånd som skapades för en tidigare generation flyttas framåt eller läses

En avvikelse utlöser EXLSLoadedCellCursorInvalidated, så att anroparen kan skilja strukturell ogiltigförklaring från data- eller formatfel

ExpectedGeneration := Worksheet.CellStructureGeneration;

{ Read or retain traversal state }

XlsValidateStructureGeneration(
  ExpectedGeneration,
  Worksheet.CellStructureGeneration);

Markör för klassisk arbetsbok

IXLSWorkbook.CreateLoadedCellCursor fångar den klassiska arbetsbokens aggregerade generering och validerar den före varje MoveNext- och Current-anrop

Markören traverserar allokerade grenar i den glesa lagringen direkt med konstant markörstatus och returnerar egna TXLSLoadedCellSnapshot-värden

Den booleska överlagringen fryser huruvida självständigt formaterade lagrade tomceller tas med; ärvda rad-, kolumn- och kalkylbladsformat skapar inga tomma markörposter

Markör för XLSX-arbetsbok

TXLSXWorkbook.CreateLoadedCellCursor fångar ett lån med arbetsbokens livstid och en aggregerad topologigenerering som delas av varje kalkylblads cellager och av kalkylbladssamlingen

Den materialiserade vägen läser glesa radblock direkt, medan den packade vägen återanvänder den packade iteratorn utan att materialisera celler eller behålla interna pekare i ögonblicksbilderna

Den booleska överlagringen kan ta med endast-formaterade lagrade tomceller i båda lagringsrepresentationerna, medan oformaterade Empty- och Null-platshållare förblir uteslutna

Att släppa arbetsboken ogiltigförklarar dess lån innan kalkylbladslagringen frigörs, så att senare marköråtkomst utlöser EXLSLoadedCellCursorInvalidated

Konkurrensgräns

Genereringskontroller ger endast fail-fast-detektering och gör inte samtidig arbetsboksmutation och traversering trådsäkert

Se även