Método CreateLoadedCellCursor
Cria um cursor de extração sobre células armazenadas em uma pasta de trabalho XLSX carregada, com uma opção para incluir células em branco com estilo próprio
Sintaxe
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload; function CreateLoadedCellCursor( AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
Ordem de travessia e custo
O cursor percorre as planilhas na ordem da coleção e, em seguida, as células por linha e coluna crescentes
SheetIndex, Row e Col são coordenadas públicas com base um
Planilhas materializadas são lidas diretamente de seus blocos esparsos alocados de 256 linhas, sem construir uma lista ordenada de células
Planilhas empacotadas são lidas diretamente pelo iterador do armazenamento empacotado e permanecem empacotadas após a travessia
O estado do cursor é constante em relação ao tamanho da pasta de trabalho e não aloca matrizes dimensionadas para os limites de linha ou coluna do XLSX
A sobrecarga sem parâmetros ignora células em branco somente com estilo, espaços reservados Empty armazenados e espaços reservados Null armazenados
Passe True para incluir coordenadas em branco com estilo próprio do armazenamento materializado ou empacotado, sem materializar células empacotadas
Espaços reservados Empty e Null sem estilo permanecem excluídos em ambos os modos
Campos do instantâneo
| Campo | Significado |
|---|---|
SheetIndex / SheetName | Identidade da planilha proprietária no momento da captura |
Row / Col | Coordenadas de célula com base um |
StyleIndex | Índice de formato de célula XLSX capturado do armazenamento materializado ou empacotado |
Kind | xlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError ou xlckBlank |
Value | Valor Variant próprio capturado para a célula atual |
Formula | Texto da fórmula para células com fórmula; caso contrário, uma cadeia vazia |
Strings e Variants em TXLSLoadedCellSnapshot são valores próprios e não expõem ponteiros internos de célula ou de armazenamento empacotado
Para células XLSX com fórmula, Value é o valor em cache atualmente armazenado e a travessia não recalcula a fórmula
Para xlckBlank, Value é Unassigned, Formula está vazia e StyleIndex identifica o formato de célula armazenado
Estado, invalidação e tempo de vida
State é xlccBeforeFirst até o primeiro MoveNext bem-sucedido, xlccActive enquanto Current está disponível e xlccEof após a conclusão da travessia
Ler Current antes da primeira célula ou depois do EOF lança EXLSLoadedCellCursorState
Criar ou excluir células armazenadas, materialização do armazenamento empacotado, reconstruções explícitas de índice ou adicionar, excluir, mover ou limpar planilhas invalida o cursor
A próxima chamada de MoveNext ou Current então lança EXLSLoadedCellCursorInvalidated
Alterar o valor, a fórmula ou o formato de uma célula existente não invalida o cursor, e um instantâneo já capturado permanece inalterado
Liberar a pasta de trabalho antes do cursor também lança EXLSLoadedCellCursorInvalidated, em vez de deixar o cursor com um ponteiro de pasta de trabalho pendente
A validação de geração é uma detecção imediata de falhas e não torna a mutação e a travessia concorrentes seguras para threads
Exemplo
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;