Documentação do HotXLS

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

CampoSignificado
SheetIndex / SheetNameIdentidade da planilha proprietária no momento da captura
Row / ColCoordenadas de célula com base um
StyleIndexÍndice de formato de célula XLSX capturado do armazenamento materializado ou empacotado
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula, xlckError ou xlckBlank
ValueValor Variant próprio capturado para a célula atual
FormulaTexto 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;

Veja também