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é
| Champ | Signification |
|---|---|
SheetIndex / SheetName | Identité de la feuille de calcul propriétaire au moment de la capture |
Row / Col | Coordonnées de cellule en base 1 |
StyleIndex | Index de format de cellule XLSX capturé depuis le stockage matérialisé ou compacté |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError ou xlckBlank |
Value | Valeur Variant détenue capturée pour la cellule courante |
Formula | Texte 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;