Documentação HotXLS

Saída nativa de tabelas dinâmicas, consultas de filtragem cruzada e membros em falta

Saída nativa em cache na folha de cálculo

function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable): Integer;
function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;

A operação prepara tanto a grelha de relatório nativa completa compacta, tabular ou de esquema como a respetiva localização, rowItems, colItems e metadados do eixo de dados, antes de consolidar em conjunto os valores da folha de cálculo e a detenção da saída; devolve 1 em caso de sucesso ou -1 com um diagnóstico em estado não suportado ou colisão

As vistas locais não vazias suportadas retêm os filtros atuais, identidades exatas de membros da cache, hierarquias comuns, domínios agrupados suportados, subtotais predefinidos ou personalizados e qualquer eixo de dados suportado; a grelha nativa usa valores agregados originais em vez de recombinar médias apresentadas ou outros resultados não aditivos

Os objetos de células e a formatação existentes continuam disponíveis, enquanto encolher ou mover o relatório limpa apenas os valores anteriormente detidos inalterados; saída editada, sobreposição com a origem, células unidas, fórmulas, matrizes e outros relatórios provocam rejeição antes da mutação

A saída escalar importada exige adoção explícita com AAdoptExisting=True; as atualizações seguintes usam detenção persistente de células individuais, incluindo após gravar e reabrir

A operação lê os registos atuais da cache e não atualiza dados de origem nem recalcula fórmulas; Cache.RefreshOnLoad=False é válido porque a folha de cálculo contém agora resultados nativos reais preparados

Os callbacks de filtros de registos do chamador participam na pré-visualização destacada mas não têm representação OOXML; a atualização nativa explícita do Excel não consegue reproduzir restrições arbitrárias de callbacks, enquanto os filtros manuais e de Slicers persistidos suportados retêm a respetiva representação no ficheiro

Os campos calculados de cache SUM suportados e os itens calculados detidos pela cache usam o contrato de somas de contexto descrito em Campos de tabelas dinâmicas calculados nativos e itens detidos pela cache; legendas de membros personalizadas e combinações de layout não suportadas provocam rejeição explícita, enquanto o layout bruto gerado suportado retém XML não relacionado e as máscaras atuais de membros

O TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean é o auxiliar de layout preparado de nível mais baixo em lxPivotXml

O respetivo escritor recebe o retângulo do relatório inteiro por ordem linha a linha, incluindo células em branco, com offsets de base zero a partir da âncora da tabela; o preflight de XML e da grelha termina antes do primeiro callback, mas as escritas detidas pelo chamador não podem ser revertidas se um callback lançar

A facade do livro fornece um escritor de captura destacado para atualizações transacionais de células; a pré-visualização preparada combinada e as grelhas nativas de Variant são limitadas a 4194304 células

O caminho nativo de pré-visualização pode pedir orientação nativa de totais gerais através do parâmetro opcional AUseNativeGrandTotals do TXLSPivotTable.MakePreview; as chamadas existentes de escritor único e de escritor de layout preservam o comportamento anterior

Layout e legendas repetidas

Defina Compact e Outline no relatório e em cada campo de linha antes da materialização; os campos tabulares usam ambas as flags como False, os campos de esquema usam Compact=False e Outline=True, e os campos compactos usam ambas as flags como True

property TXLSPivotField.RepeatLabels: Boolean;

RepeatLabels assume False por predefinição, copia-se de forma independente com o campo e lê ou escreve a extensão nativa x14:pivotField fillDownLabels; repete as legendas dos antecessores na saída tabular e de esquema e não tem efeito num campo cujas flags compact e outline estejam ambas ativas

Cada campo de linha separado recebe a respetiva coluna física, enquanto campos de esquema compactos adjacentes partilham uma coluna de legendas; várias medidas em linhas seguem CompactData, e várias medidas em colunas mantêm legendas de dados e totais gerais independentes

Os subtotais tabulares predefinidos aparecem abaixo do respetivo grupo; o SubtotalTop de esquema seleciona a localização no topo ou no fundo, enquanto as medidas em linhas usam linhas agregadas separadas abaixo do grupo e mantêm a legenda de cada medida

A saída nativa em cache deixa em branco as interseções de linhas e colunas ausentes e preserva um zero numérico real; o Make comum e as pré-visualizações sem a opção nativa mantêm o comportamento anterior de resultados vazios

Os campos inativos e de medidas herdam o layout do relatório nos metadados nativos preparados, para que a atualização explícita do Excel retenha as legendas adequadas de campos e dados; a operação preserva as definições vivas dos campos e as verificações de detenção existentes

As extensões importadas de legendas repetidas aceitam alias de espaços de nomes, incluindo declarações no próprio elemento de extensão; o XML desconhecido não relacionado continua preservado pelo caminho nativo de materialização

Membros agrupados, ordem de eixos e subtotais personalizados

A saída nativa suporta grupos completos de intervalos numéricos, grupos de datas e grupos manuais de membros representados pelos metadados de agrupamento com tipo existentes na cache; as legendas geradas retêm os GroupItemLabels importados exatos, incluindo Unicode e legendas de datas localizadas

O agrupamento é avaliado numa cache destacada, preservando os registos, os handles de itens partilhados e as identidades de grupos da cache viva; limites inválidos, intervalos zero, domínios incompletos ou tipos de valores de itens de grupo não suportados provocam rejeição antes de a saída da folha de cálculo mudar

A TXLSPivotField.Position existente de base zero determina a ordem nativa estável do eixo de linha ou coluna; posições iguais retêm a ordem de campos escrita, pelo que os campos recém-criados com a posição predefinida mantêm a ordenação anterior

As hierarquias nativas importadas de Ano/Mês e de pais/membros manuais retêm a respetiva sequência explícita de eixos, enquanto os índices de campos da cache, os índices de campos da vista e as identidades de base do cálculo de apresentação se mantêm inalterados; os grupos manuais respeitam a ordem explícita de itens da tabela dinâmica em vez de ordenar legendas de grupos ou índices da cache

Os subtotais personalizados de linhas suportam xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar e xlpsVarP, incluindo várias funções selecionadas, campos tabulares ou de esquema e medidas em linhas

Cada função agrega os registos de origem originais no respetivo âmbito de subtotal; os metadados de linha preparados identificam a função selecionada de forma independente, preservando o comportamento de atualização explícita do Excel para cálculos não aditivos e resultados vazios ou de erro

Uma seleção importada de subtotal personalizado exclui o subtotal automático implícito mesmo quando defaultSubtotal está ausente no XML nativo; as aplicações não devem combinar xlpsDefault com funções personalizadas, e um pedido com tipo tão ambíguo provoca rejeição antes da mutação

Vários níveis de campos de coluna com subtotais, combinações compactas não suportadas do eixo de dados, membros fechados e legendas personalizadas ficam fora deste contrato de saída nativa; campos e itens calculados têm os seus próprios requisitos mais estritos de SUM e de identidade de membros, e a preservação bruta não implica suporte para recalcular ou materializar uma funcionalidade

Gravar, reabrir e voltar a materializar retêm agrupamento, ordem de eixos e identidades de subtotais suportados; as vistas nativas importadas e as caches com tipo copiadas independentemente também foram verificadas contra o Excel tanto na abertura inicial como na atualização explícita

Cálculos nativos de apresentação

Defina o ShowDataAs ou o ExtendedShowDataAs de cada campo de dados comum antes de chamar MaterializeNativePivotTable; os modos de apresentação básicos e estendidos são mutuamente exclusivos

Os modos básicos incluem diferença, percentagem de um item base, diferença percentual, total acumulado, percentagem da linha, da coluna ou do total geral, e índice; os modos estendidos incluem percentagens da linha pai, da coluna pai e dos pais selecionados, percentagem cumulativa e classificações densas ascendentes ou descendentes

O BaseField é o índice de base zero do campo da tabela dinâmica para comparações, totais acumulados, percentagens dos pais selecionados e classificações; as comparações usam a posição BaseItem de base zero, ou xlPivotBaseItemPrevious e xlPivotBaseItemNext para membros visíveis adjacentes na ordem de apresentação efetiva

As percentagens da linha pai e da coluna pai escolhem o campo de eixo mais interno correspondente sem usar o BaseField; um eixo correspondente em falta deixa esses resultados em branco

As percentagens simples dividem pelo agregado original no âmbito relevante, incluindo médias não aditivas; as percentagens cumulativas somam agregados apresentados de membros e usam o total original do eixo para um campo base mais interno, enquanto um campo base mais externo usa a soma pelos membros restantes correspondentes, pelo que as médias podem ultrapassar 100 por cento

As classificações nativas contam valores agregados precedentes distintos, e as comparações preservam o comportamento do Excel para brancos e erros em interseções ausentes, bases em falta, divisores zero e limites anterior ou seguinte; as percentagens simples tratam um numerador ausente como zero

Os totais gerais usam a semântica nativa do modo selecionado, incluindo totais em branco ao longo de um eixo de comparação ou acumulado; mudar um modo de apresentação mantém as verificações transacionais de detenção, colisão e orçamento do relatório

Gravar e reabrir retêm o modo básico ou estendido escolhido e as identidades base, e os metadados nativos preparados suportam uma atualização explícita do Excel; o Make comum e as pré-visualizações sem a opção nativa mantêm o respetivo contrato de cálculo existente

Disponibilidade de filtragem cruzada de Slicers

property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;

Esta consulta só de leitura avalia os registos atuais suportados de caches não OLAP ignorando a própria seleção deste Slicer e retendo as seleções de outros Slicers, filtros manuais, predicados do chamador e filtros agregados aplicáveis

A disponibilidade é a união através das vistas ligadas; os membros históricos sem registos correspondentes não têm dados, as medidas em branco não têm dados, e as medidas de texto não vazio, Boolean, zero, erro e data contam como dados no contrato nativo verificado

A consulta usa um lease de leitura e uma pré-visualização destacada de registos, preserva handles vivos e a seleção, e respeita o FormulaArrayMemoryLimit; falha de callback, reentrada, bindings inválidos ou membros calculados agregados não suportados lançam sem consolidar mudanças vivas

Consultar a disponibilidade não atualiza caches, não recalcula fórmulas, não faz I/O de ficheiros nem atualiza flags nativas serializadas de sem-dados; as aplicações não devem inferir o estado nativo da UI a partir desta operação só de leitura

TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable;
  ARecordIndex: Integer) of object;
function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter;
  AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;

O callback avançado de registos recebe a pré-visualização destacada e um índice de registo de base zero depois da filtragem simples e agregada suportada; o EvaluationSourceTable retém a identidade original da vista e o valor devolvido é o número de registos emitidos

Um filtro de substituição substitui apenas o callback registado do detentor fornecido; os outros detentores e o predicado externo continuam ativos, e um callback de substituição não nil exige um detentor não nil

Purga explícita de membros históricos

Removed := Workbook.PurgePivotCacheMissingItems(
  Pivot.CacheId, 0);
if Removed < 0 then
  raise Exception.Create('The cache member purge was rejected');

O TXLSXWorkbook.PurgePivotCacheMissingItems(ACacheId: Integer; ARetainMissingItemsPerField: Integer = 0): Integer remove membros não usados após validação completa e remapeamento das vistas e Slicers ligados suportados

Devolve a contagem total de itens partilhados removidos em todos os campos, zero para uma no-op bem sucedida, ou -1 com o diagnóstico 1402; os registos atuais retêm todos os membros referenciados, mais no máximo o número pedido de membros não usados por campo, escolhidos pelo maior índice original de item partilhado

Os membros retidos mantêm a ordem relativa original e os handles de objetos, enquanto os índices lógicos ficam compactos; os handles ligados de campos/itens, as flags manuais de ocultação e de detalhe, os membros ativos de página ou comparação e as seleções de Slicers retêm as respetivas identidades

As flags e os limites do domínio são recalculados a partir do domínio retido; as posições importadas comprimidas de linha/coluna e de página suportadas são remapeadas explicitamente, enquanto as referências fictícias de totais gerais e os ordinais do pseudo-campo de dados se mantêm inalterados

As caches locais completas comuns de folhas de cálculo são suportadas; caches agrupadas, calculadas, de propriedades de membros, OLAP, externas, incompletas ou ambíguas e metadados opacos de identidade não suportados provocam rejeição antes da mutação

Remover um membro ativo de página ou comparação, um subconjunto de Slicer selecionado inteiro ou uma interseção efetiva anteriormente não vazia provoca rejeição atómica; os atributos primitivos de membros que se perderiam durante a reconstrução com tipo também provocam rejeição

A extensão conhecida de detenção de materialização mantém-se inalterada porque as respetivas coordenadas e tokens de valores com tipo não contêm índices de membros da cache; as extensões opacas não relacionadas não se presumem seguras

A purga não atualiza dados de origem, não reescreve células de relatórios da folha de cálculo, não invoca callbacks de registos nem aplica automaticamente os metadados MissingItemsLimit; a atualização mantém-se apenas-acrescentativa a menos que esta operação seja explicitamente pedida

Coordenação avançada da purga

O TXLSPivotCache._PrepareMissingItemPurge devolve um TXLSPivotCachePurgePlan opaco; as aplicações devem usar normalmente a facade do livro para que todas as vistas e Slicers ligados fiquem incluídos

O MapItem e o RemainingItemCount inspecionam o remapeamento da cache, o StagePivotField registra um campo ligado e devolve o respetivo índice de preparação, e o MapViewItemPosition inspeciona o mapeamento de posição no ficheiro desse campo; os membros removidos mapeiam para -1 e o RemovedCount comunica a contagem total de remoções

O Validate verifica o esquema original, os registos, as identidades de detenção de campos/itens e as seleções preparadas das vistas; o Commit valida de novo e transfere a detenção preparada sem alocação nem callbacks após a primeira troca viva

O plano detém snapshots destacadas, mantém privada a cache preparada mutável e nunca detém os objetos originais da cache ou da vista; mantenha esses originais vivos até o Destroy do plano libertar a preparação, e faça commit de cada plano apenas uma vez

A preparação rejeitada de um campo reverte essa etapa, para que o plano possa ser reutilizado; as mutações não suportadas após a preparação provocam rejeição antes do commit