Docs HotXLS

Méthode CreateLoadedCellCursor

Crée un curseur d'extraction sur les cellules stockées d'un classeur XLSX chargé, avec une option pour inclure les cellules vides avec mise en forme propre

Syntaxe

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

Ordre et coût de parcours

Le curseur visite les feuilles de calcul dans l'ordre de la collection, puis les cellules par ligne et colonne croissantes

SheetIndex, Row et Col sont des coordonnées publiques en base 1

Les feuilles de calcul matérialisées sont lues directement depuis leurs blocs clairsemés alloués de 256 lignes sans construire de liste de cellules triée

Les feuilles de calcul compactées sont lues directement via l'itérateur du stockage compacté et restent compactées après le parcours

L'état du curseur est constant quelle que soit la taille du classeur et n'alloue pas de tableaux dimensionnés aux limites de lignes ou de colonnes XLSX

La surcharge sans paramètre ignore les vides avec style seul, les espaces réservés Empty stockés et les espaces réservés Null stockés

Passez True pour inclure les coordonnées vides avec mise en forme propre issues du stockage matérialisé ou compacté sans matérialiser les cellules compactées

Les espaces réservés Empty et Null sans style restent exclus dans les deux modes

Champs d'instantané

ChampSignification
SheetIndex / SheetNameIdentité de la feuille de calcul propriétaire au moment de la capture
Row / ColCoordonnées de cellule en base 1
StyleIndexIndex de format de cellule XLSX capturé depuis le stockage matérialisé ou compacté
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError ou xlckBlank
ValueValeur Variant détenue capturée pour la cellule courante
FormulaTexte de formule pour les cellules à formule, sinon une chaîne vide

Les chaînes et les Variants de TXLSLoadedCellSnapshot sont des valeurs détenues et n'exposent pas les pointeurs internes de cellules ou de stockage compacté

Pour les cellules à formule XLSX, Value est la valeur en cache actuellement stockée et le parcours ne recalcule pas la formule

Pour xlckBlank, Value vaut Unassigned, Formula est vide et StyleIndex identifie le format de cellule stocké

État, invalidation et durée de vie

State vaut xlccBeforeFirst jusqu'au premier MoveNext réussi, xlccActive tant que Current est disponible, et xlccEof une fois le parcours terminé

Lire Current avant la première cellule ou après EOF lève EXLSLoadedCellCursorState

La création ou la suppression de cellules stockées, la matérialisation du stockage compacté, les reconstructions explicites d'index, ou l'ajout, la suppression, le déplacement ou le vidage de feuilles de calcul invalident le curseur

Le prochain appel à MoveNext ou Current lève alors EXLSLoadedCellCursorInvalidated

Modifier la valeur, la formule ou le format d'une cellule existante n'invalide pas le curseur, et un instantané déjà capturé reste inchangé

La libération du classeur avant le curseur lève également EXLSLoadedCellCursorInvalidated au lieu de laisser le curseur avec un pointeur de classeur pendant

La validation de génération est une détection fail-fast et ne rend pas thread-safe la mutation et le parcours concurrents

Exemple

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;

Voir aussi