Documentação HotXLS

API de infraestrutura do livro

Estes membros públicos suportam integrações que inspecionam I/O, implementam serializadores ou coordenam cálculo entre livros, com membros de livros declarados em lxHandleX e o grafo do espaço de trabalho declarado em lxDepGraph

As aplicações comuns devem usar primeiro a formatação de células, o SaveAs, o Recalculate e as APIs de espaço de trabalho de livros externos; o registo em pools de estilos e o agendamento do grafo exigem as mesmas convenções de índices e tempos de vida que os serializadores e o motor de cálculo da biblioteca

Observação e recuperação de I/O

O TXLSXWorkbook.OnReadCell recebe o índice da folha, a linha, a coluna, o valor armazenado e a fórmula de cada célula materializada durante a análise XLSX, com uma flag Cancel writável; o TXLSXWorkbook.OnWriteCell recebe um valor de saída writável mais as flags Skip e Cancel antes de uma célula ser serializada, para que um host possa transformar ou omitir saída sem substituir a API do livro pela API direta de streams

Ambos os callbacks usam coordenadas de folhas de cálculo e células de base um, e os respetivos tipos declarados são TXLSXCellReadEvent e TXLSXCellWriteEvent; os callbacks executam dentro da operação de I/O ativa, por isso evite iniciar outra operação no mesmo livro a partir de um callback

O TXLSXWorkbook.RecoveryMode assume False por predefinição e permite que falhas suportadas de análise de XML de folhas de cálculo se tornem diagnósticos de aviso enquanto a abertura continua, potencialmente deixando apenas conteúdos parcialmente recuperados da folha de cálculo; não garante a recuperação de um pacote ZIP ilegível, por isso inspecione os diagnósticos e os dados recuperados antes de gravar

O TXLSXWorkbook.FireProgress despacha uma fase, um estado, uma contagem atual e uma contagem total para os handlers de progresso atribuídos, com o handler legado a receber notificações de trabalho e o handler estendido a receber todos os estados; um handler estendido pode pedir cancelamento, exceto que a notificação de fim de escrita não pode reverter uma saída já consolidada

O TXLSXWorkbook.AddDiagnostic acrescenta e devolve um diagnóstico detido pelo livro, regista o código, a severidade, a operação, a mensagem, o código nativo, o contexto de folha e o nome da parte do pacote fornecidos, copia o nome da classe da exceção quando é fornecida uma exceção, e invoca o OnDiagnostic; não assume a detenção da exceção nem a lança

function TXLSXWorkbook.AddDiagnostic(ACode: Integer;
  ASeverity: TXLSDiagnosticSeverity; AOperation: TXLSDiagnosticOperation;
  const AMessage: WideString; ANativeCode, ASheetIndex: Integer;
  const ASheetName, APartName: WideString;
  AException: Exception): TXLSDiagnostic;

Políticas de saída e inspeção do pacote gravado

O TXLSXWorkbook.CSVEmitFormulas assume False por predefinição e muda a saída CSV de resultados de fórmulas para texto de fórmulas nas células com fórmula; a saída de resultados tenta avaliar a fórmula e recorre ao texto ou valor armazenado da célula quando a avaliação falha; o TXLSXWorkbook.CSVQuoteAllStrings também assume False por predefinição e força aspas em torno dos campos de texto, enquanto números, datas, Booleans, Null e Empty mantêm as regras normais de aspas

O TXLSXWorkbook.LastSaveUsedStreaming comunica se a última gravação preparada usou streaming de folhas de cálculo, o TXLSXWorkbook.LastSavePeakRowXmlChars comunica o maior fragmento XML de linha em buffer, o TXLSXWorkbook.LastSaveBufferedWorksheetXmlChars comunica o XML combinado de folhas de cálculo em buffer, e o TXLSXWorkbook.LastSavePeakAuxiliaryXmlChars comunica o maior fragmento XML auxiliar rastreado; estas são contagens de carateres da instrumentação do serializador, em vez de medições de memória total do processo, e a saída ODS não usa o caminho de streaming de folhas de cálculo XLSX

O TXLSXWorkbook.TryCopyPreservedPart tenta copiar uma parte de origem preservada elegível, incluindo a respetiva representação comprimida, para um TZipArchive de destino fornecido pelo chamador, devolvendo True quando copia ou False quando é exigida a serialização normal; a origem tem de permanecer disponível a partir de uma abertura suportada por ficheiro, e partes em falta ou explicitamente descartadas não podem ser copiadas

O chamador é o detentor do arquivo de destino e tem de o concluir normalmente; uma falha de reversão da cópia comprimida ainda pode lançar uma exceção, e este auxiliar nem constrói um pacote de livro completo nem atualiza as respetivas relações ou tipos de conteúdo

Encriptação e metadados do livro

O TXLSXWorkbook.SaveAsEncryptedAgile aceita um nome de ficheiro e uma palavra-passe não vazia, serializa o pacote XLSX em memória e escreve o contentor encriptado Agile, devolvendo 1 em caso de sucesso ou -1 numa falha comunicada; o VerifyEncryptedSave opcional executa uma verificação de reabertura após a escrita, e o método exige memória para o pacote não encriptado bem como para os respetivos bytes serializados

O TXLSXWorkbook.VerifyEncryptedFile abre o ficheiro e a palavra-passe fornecidos num livro temporário e devolve True apenas quando essa abertura tem sucesso, convertendo exceções em False; verifica a legibilidade em vez de comparar todas as células com o livro atual, e segue o comportamento normal do OpenEncrypted para uma entrada XLSX não encriptada

O TXLSXWorkbook.DocSecurity guarda o campo de bits estendido de propriedades do documento: 1 denota proteção por palavra-passe, 2 recomendação de só leitura, 4 estado de só leitura imposto, e 8 bloqueio de anotações; estes bits de metadados não aplicam eles próprios encriptação nem restrições de acesso

O TXLSXWorkbook.DocPropsTouched é a flag só de leitura usada pelos escritores de propriedades do documento para decidir se as propriedades rastreadas foram configuradas; os setters de propriedades rastreadas como o Title definem-na, enquanto os metadados estendidos atribuídos diretamente não a definem automaticamente

O TXLSXWorkbook.WorkbookProtectHash expõe o hash legado de proteção do livro carregado ou gerado, normalmente quatro dígitos hexadecimais ou uma cadeia vazia quando não existe hash de palavra-passe; use os métodos de proteção do livro para mudar a proteção em vez de atribuir este valor só de leitura, e mantenha a proteção da estrutura do livro separada do armazenamento encriptado de ficheiros

O TXLSXWorkbook.ThemeMajorFont e o TXLSXWorkbook.ThemeMinorFont expõem os tipos de letra de títulos e de corpo carregados do tema e substituem os nomes quando o tema Office predefinido é gerado; um tema preservado verbatim tem precedência sobre estas definições de nomes de tipos de letra

Estilos de tabelas e pools de estilos do serializador

O TXLSXWorkbook.DefaultTableStyleName e o TXLSXWorkbook.DefaultPivotStyleName fazem o round-trip dos nomes predefinidos guardados na tabela de estilos para tabelas Excel e PivotTables recém-inseridas; atribuí-los não reformata diretamente todos os objetos existentes

O TXLSXWorkbook.ResolveTableStyle devolve um estilo personalizado detido pelo livro pelo nome, caso contrário resolve e coloca em cache os estilos incorporados suportados de TableStyleLight1 a TableStyleLight21, TableStyleMedium1 a TableStyleMedium28 ou TableStyleDark1 a TableStyleDark11, e devolve nil para um nome desconhecido; não liberte o estilo devolvido

O TXLSXWorkbook.FastStyleAppend assume False por predefinição e permite que a criação em volume salte as varreduras de eliminação de duplicados nas pools de estilos e o registo comum de estilos compostos, trocando uma tabela de estilos maior por uma inserção mais rápida quando se criam muitos estilos distintos

function TXLSXWorkbook.RegisterCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt: Integer): Integer; overload;
function TXLSXWorkbook.RegisterCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt,
  ABuiltinNumFmt: Integer): Integer; overload;
function TXLSXWorkbook.RegisterLinkedCompositeXf(
  AFont, AFill, ABorder, ANumFmt, AAlign, AProt,
  AParentXfId: Integer; ALinkedParts: TXLSXFormatParts): Integer;

O TXLSXWorkbook.RegisterCompositeXf registra os índices combinados de tipo de letra, preenchimento, limite, formato numérico, alinhamento e proteção e devolve o índice absoluto de cellXfs, não um slot de pool composto; a sobrecarga de sete argumentos aceita um ID de formato numérico incorporado que tem precedência sobre o índice de formato personalizado fornecido, com zero a significar nenhuma substituição

O TXLSXWorkbook.RegisterLinkedCompositeXf regista adicionalmente o ID do style-XF pai e as partes de formato ligadas a esse pai, retendo entradas separadas para combinações diferentes de pai ou de ligação; também devolve um índice absoluto de cellXfs

O TXLSXWorkbook.CompositeXfBase devolve o primeiro índice composto absoluto, calculado a partir das pools de estilos unidimensionais atuais, enquanto o TXLSXWorkbook.CompositeXfCount conta as entradas compostas registadas; um slot de pool usado pelo GetCompositeXf é o índice absoluto menos a base, e a base pode mudar quando essas pools crescem, por isso estes valores pertencem ao estado atual de serialização

O TXLSXWorkbook.RegisterCondDxf registra uma referência emprestada de TXLSDxfStyle e devolve o respetivo ID de estilo diferencial de base zero, reutilizando um ID existente para a mesma referência de objeto; mantenha o objeto vivo enquanto a serialização o usar

O TXLSXWorkbook.ResetCondDxfs limpa a contagem do registo ativo sem libertar estilos emprestados, e o TXLSXWorkbook.CondDxfCount comunica essa contagem; a preparação da gravação reconstrói este registo, por isso não persista estes IDs independentemente do pacote a escrever

O TXLSXWorkbook.PivotCaches é a coleção TXLSPivotCaches detida pelo livro, partilhada pelas PivotTables das folhas de cálculo; o AddPivotTable reutiliza uma cache de origem correspondente ou cria uma, e o RefreshPivotCache atualiza a cache identificada preservando identidades de membros suportadas

Integração de cálculo

O TXLSXWorkbook.RecalcThreads assume zero por predefinição, com zero ou um a usar recálculo em série e valores maiores a ativar avaliação por workers de fronteiras de fórmulas independentes; livros com matrizes dinâmicas usam uma passagem em série independentemente desta definição, os nós de tabelas de dados What-If continuam em série, e os handlers de funções do utilizador usados por workers têm de ser thread-safe

O TXLSXWorkbook.SolveCycleIteratively é um ponto de entrada avançado normalmente invocado pelo Recalculate quando a iteração está ativada, consumindo índices de nós do grafo de dependências atual desse livro e avaliando nós de ciclos no TList fornecido; índices de um grafo do espaço de trabalho ou de outro livro não são intercambiáveis

O solver usa IterateCount e IterateDelta, retém os valores finais mesmo que o limite de iterações seja atingido, e devolve lxOk sem certificar a convergência; os membros de ciclos de matrizes dinâmicas devolvem lxErrorCircumRef, e o argumento CycleCount da assinatura não substitui a classificação de ciclos nos nós do grafo

Construção do grafo de dependências do espaço de trabalho

O TXLSWorkspaceDepGraph guarda dependências de fórmulas entre identidades de livros e identidades de folhas fornecidas pelo chamador, sem abrir livros nem avaliar fórmulas; construa um grafo a partir das fórmulas atuais e das referências resolvidas e reconstrua-o depois de mudanças estruturais ou de fórmulas que invalidem essas referências

function TXLSWorkspaceDepGraph.AddNode(
  const AWorkbookIdentity, ASheetName: WideString;
  ASheetIndex, ARow, ACol, AOutRow2, AOutCol2: Integer;
  AVolatile: Boolean; AReferences: TXLSWorkspaceDepReferenceList;
  ARefUnstable: Boolean = False): Integer;
procedure TXLSWorkspaceDepGraph.DirtyTopoOrder(AOrder: TList;
  out ACycleNodeCount, ABlockedNodeCount: Integer);

O TXLSWorkspaceDepGraph.AddNode acrescenta um nó de fórmula e devolve o respetivo índice de nó de base zero, copiando as referências fornecidas em vez de detê-las na lista; os índices de folhas são de base um, enquanto as coordenadas de linhas e colunas, incluindo o canto inferior direito do retângulo de saída inclusivo, são coordenadas da calculadora de base zero

O TXLSWorkspaceDepReferenceList.Add acrescenta um registo de referência resolvida de célula, intervalo ou nome definido, o TXLSWorkspaceDepReferenceList.Items lê esses registos por índice de base zero, e o TXLSWorkspaceDepReferenceList.Clear repõe a lista para reutilização; o chamador é o detentor desta lista de entrada e pode limpá-la ou libertá-la depois de o AddNode ter copiado as respetivas entradas

O TXLSWorkspaceDepGraph.BuildEdges resolve as referências armazenadas de células e intervalos contra os retângulos de saída de fórmulas; as referências marcadas com LookupScan propagam a marca de obsoleto mas não impõem ordem de avaliação nem participam na deteção de ciclos

O TXLSWorkspaceDepGraph.NodeIndexOf resolve um livro, folha, linha e coluna num índice de nó de base zero ou -1 quando ausente, usando o nome da folha quando disponível e o índice declarado da folha como alternativa

O TXLSWorkspaceDepGraph.FindDependentsOfDefinedName limpa um TList fornecido não nil e preenche-o com os índices dos nós que se referem diretamente ao símbolo nomeado no livro e âmbito especificados, com um índice de âmbito negativo a corresponder a todos os âmbitos; as entradas são codificadas como Pointer(NativeInt(NodeIndex)), pelo que uma entrada nil da lista pode representar o nó zero

Gerações de obsolescência e ordem de avaliação do espaço de trabalho

O TXLSWorkspaceDepGraph.BeginDirtyGeneration inicia uma geração nova, repõe a contagem ativa de nós obsoletos e as flags de bloqueio por ciclos, e torna inativos os carimbos de obsolescência anteriores; chame-o antes de marcar os nós para uma nova passagem de recálculo

O TXLSWorkspaceDepGraph.MarkAllDirty marca todos os nós da geração atual; o TXLSWorkspaceDepGraph.MarkWorkbookDirty semeia os nós pertencentes ao livro identificado e os nós que lhe se referem, propagando depois para os dependentes, enquanto o TXLSWorkspaceDepGraph.MarkVolatileDirty semeia os nós voláteis e o TXLSWorkspaceDepGraph.MarkCyclesDirty semeia os componentes de ciclos detetados, propagando também a respetiva obsolescência

O TXLSWorkspaceDepGraph.IsNodeDirty comunica se um nó válido transporta o carimbo da geração atual e devolve False para um índice inválido; o TXLSWorkspaceDepGraph.DirtyGeneration expõe esse carimbo e o TXLSWorkspaceDepGraph.DirtyNodeCount conta os nós marcados na geração ativa

O TXLSWorkspaceDepGraph.DirtyTopoOrder exige um TList não nil detido pelo chamador, limpa-o e preenche-o com índices de nós obsoletos por ordem de dependências, excluindo nós de ciclos obsoletos e nós bloqueados por esses ciclos; as duas contagens de saída distinguem membros de ciclos de nós a jusante bloqueados, e as entradas da lista usam a mesma convenção de índice de base zero codificado em ponteiros

O TXLSWorkspaceDepGraph.HasRefUnstable comunica se algum nó foi acrescentado com a flag de referência instável, o que permite ao chamador evitar depender de um agendamento estático obsoleto quando as referências de fórmulas podem mudar no momento da avaliação; o grafo não resolve essas referências mutáveis por si

Inspeção do grafo do espaço de trabalho

O TXLSWorkspaceDepGraph.NodeCount conta os nós de fórmulas, o TXLSWorkspaceDepGraph.ReferenceCount conta as referências copiadas, e o TXLSWorkspaceDepGraph.EdgeCount comunica as arestas de dependências construídas; chame o BuildEdges antes de consumir estatísticas de arestas

O TXLSWorkspaceDepGraph.WorkbookCount conta as identidades de livros internadas, incluindo identidades introduzidas por referências, e o TXLSWorkspaceDepGraph.WorkbookIdentities enumera-as por índice de base zero; estas cadeias de identidade são chaves do grafo, em vez de evidência de que um ficheiro externo foi carregado

O TXLSWorkspaceDepGraph.ComponentCount comunica o número de componentes fortemente ligados após a construção de componentes, desencadeada pelo MarkCyclesDirty, pelo DirtyTopoOrder ou pelo acesso a componentes; cada registo Components fornece NodeStart, NodeCount e IsCycle

O TXLSWorkspaceDepGraph.ComponentNodes expõe a matriz achatada de índices de nós de base zero desses componentes, indexada do NodeStart de um componente até NodeStart + NodeCount - 1; contagens e registos indexados descrevem o grafo atual e devem ser readquiridos após a reconstrução do grafo

Continue com os membros adicionais da facade XLSX e a visão geral da facade XLSX para os pontos de entrada comuns de livros