Documentação do HotXLS

Método CreateLoadedCellCursor

Cria um cursor de extração sobre células armazenadas num livro de trabalho XLS clássico carregado, 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 folhas pela 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

A travessia segue diretamente os ramos alocados do armazenamento esparso clássico, pelo que o estado do cursor permanece constante e não aloca matrizes dimensionadas para os limites de linha ou coluna da folha de cálculo

A sobrecarga sem parâmetros ignora as células em branco e preserva o contrato existente de travessia de valores e fórmulas

Passe True para incluir células em branco armazenadas cujo XF da célula difere do formato herdado da linha, coluna ou folha de cálculo

Apenas a formatação herdada não materializa nem emite uma coordenada em branco

Campos do instantâneo

CampoSignificado
SheetIndex / SheetNameIdentidade da folha proprietária no momento da captura
Row / ColCoordenadas de célula com base um
StyleIndexÍndice de estilo XF clássico
KindxlckText, xlckNumber, xlckDateTime, xlckBoolean, xlckFormula 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

As strings e os Variants em TXLSLoadedCellSnapshot são valores próprios e não expõem objetos internos de célula

Para células com fórmula, Value segue a semântica normal de acesso a valores do livro de trabalho clássico, incluindo o cálculo quando necessário

Para xlckBlank, Value é Unassigned, Formula está vazia e StyleIndex identifica o XF armazenado da célula

Estado e invalidação

State é xlccBeforeFirst até ao 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 levanta EXLSLoadedCellCursorState

Criar ou eliminar células armazenadas, adicionar, eliminar ou mover folhas, ou substituir o modelo do livro de trabalho invalida o cursor

A chamada seguinte a MoveNext ou Current levanta então 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

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