Ciclo de vida do cache de Pivot local e layout nativo
A versão 2.384.94 adiciona views de cache compartilhado, criação local de Slicer de Pivot não OLAP e remoção explícita, reconstrução de cache agrupado e um gerador limitado de metadados de layout nativo
Views compartilhadas e criação de Slicer
SecondPivot := Sheet.AddPivotTable(FirstPivot.Cache, 20, 1, 'SecondView');
Cache := Workbook.CreatePivotSlicerCache(FirstPivot, 'Category');
if Cache.ConnectPivotTable(SecondPivot) <> 1 then
raise Exception.Create('The second view could not be connected');
Slicer := Sheet.Slicers.Add(Cache, 1, 6, 8, 8);
TXLSXWorksheet.AddPivotTable(ACache: TXLSPivotCache; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable cria outra view de um cache de propriedade desta pasta de trabalho; ele valida propriedade, geometria e nomes antes de anexar a view
TXLSXWorkbook.CreatePivotSlicerCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXSlicerCache cria ou reutiliza com segurança um cache de campo de fonte com suporte, enquanto TXLSXSlicerCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer conecta uma view local existente de cache compartilhado
TXLSXSlicers.Add(ACache: TXLSXSlicerCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer cria a UI da planilha usando limites de célula explícitos e inclusivos com base um; nomes de fonte, partes de cache, referências de desenho e associação de view são preparados antes da mutação
Fontes de Slicer agrupadas, calculadas e OLAP, caches estrangeiros, domínios importados inconsistentes e máscaras independentes ambíguas do mesmo campo são rejeitados; o XML de view importado com suporte mantém extensões sem relação quando uma nova UI é anexada
Remoção explícita e membros futuros
if Workbook.RemoveSlicerCache(Cache, xlsxSlicerPreserveCurrentSelection) <> 1 then
raise Exception.Create('The Slicer cache could not be removed');
TXLSXSlicerRemovalMode tem xlsxSlicerClearSelection e xlsxSlicerPreserveCurrentSelection; TXLSXWorkbook.RemoveSlicerCache(ACache: TXLSXSlicerCache; AMode: TXLSXSlicerRemovalMode): Integer remove a UI vinculada, as referências de desenho, as partes nativas de cache e as conexões juntas
O modo de limpeza remove esta restrição de Slicer mantendo filtros independentes e predicados do chamador; o modo de preservação transfere a restrição atual dele para máscaras comuns de membros de Pivot antes de remover o Slicer
A operação retorna 1 em caso de sucesso e -1 para vinculações sem suporte ou inseguras; todas as views afetadas e o estado do cache são validados e preparados antes do commit, e ambiguidade de propriedade do mesmo campo é rejeitada sem adivinhação
TXLSPivotField.IncludeNewItemsInFilter: Boolean tem False como padrão; um subconjunto manual retido exclui membros recém-anexados, a menos que esta política seja habilitada explicitamente, enquanto um campo irrestrito os inclui
A seleção preservada, portanto, permanece estável após o crescimento da fonte, enquanto o modo de limpeza inclui novos membros de fonte; listas de membros importadas e criadas serializam a mesma política de ocultação de membros futuros
As operações existentes de Delete e Clear de coleção ainda protegem uma view final de Slicer vinculada; use a operação explícita da pasta de trabalho quando o cache e as restrições conectadas dele precisarem ser removidos juntos
Reconstrução fixa de cache agrupado
A atualização prepara identidades de grupo numéricas, de data e discretas explícitas a partir de links base/pai validados, incluindo campos derivados importados cujas colunas de registro estão ausentes; campos de fonte somente de link retêm seus valores originais em vez de serem agrupados eles próprios
Domínios com suporte retêm handles de membros existentes, legendas e ordinais de grupo; o agrupamento numérico e de data usa uma resolução por campo e um domínio nativo fixo de itens de grupo, e o agrupamento de data exige intervalo um
TXLSPivotCacheField.GroupAutoStart e TXLSPivotCacheField.GroupAutoEnd têm True como padrão e preservam a política de limites importada; novos valores que exijam expansão de domínio ou reagrupamento são rejeitados antes da mutação
Grupos discretos exigem um mapeamento existente para cada membro de fonte; pais cíclicos, domínios tipados inválidos, legendas de string não exclusivas, bases calculadas, campos de member-property e resoluções de pais sem suporte são rejeitados transacionalmente
O Make comum reconstrói valores derivados de registro obsoletos ou ausentes com suporte, enquanto o MakePreview o faz apenas em uma cópia desanexada; salvar omite itens compartilhados internos de placeholder dos domínios nativos derivados e emite exatamente os índices declarados de itens de grupo
Preview de metadados de layout nativo
function TryXLSXGeneratePivotLayout(const Xml: WideString; Table: TXLSPivotTable; out ResultXml, Reason: WideString): Boolean;
O helper lxPivotXml prepara rowItems, colItems, metadados de eixo e localização para views locais compactas não vazias com suporte, usando identidades exatas de campo e de membro de cache; ele aceita hierarquias comuns, subtotais padrão no topo ou na base e qualquer eixo de dados
Esta operação apenas de metadados exige Cache.RefreshOnLoad=True explícito; ela preserva o XML desconhecido e retorna o XML original mais um motivo em inglês quando campos agrupados ou calculados, subtotais personalizados, layout sem suporte ou identidades importadas inconsistentes não puderem ser representados
O helper não reescreve células da planilha nem altera sinalizadores vivos de tabela; chamadores que exigem saída de planilha em cache devem fornecer um writer apropriado e uma operação de materialização com suporte separada
TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter): Integer fornece callbacks de layout síncronos a partir de uma preview desanexada, retendo a identidade original de EvaluationSourceTable
TlxPivotLayoutWriter recebe a tabela original, o eixo de linha/coluna, vetores copiados de índice de campo e de índice de item de cache, TlxPivotLayoutItemKind, o tipo de subtotal e o comprimento de prefixo; xlplikData, xlplikSubtotal e xlplikGrand distinguem identidades de agregação sem analisar legendas
Os vetores usam TlxPivotLayoutIndices e são válidos durante o callback; exceções propagam, e o comportamento existente de Make e de MakePreview de writer único permanece disponível
TXLSPivotTables._AddOwned(ATable: TXLSPivotTable) reserva capacidade da coleção antes da transferência de propriedade e aceita anexação transacional interna de view; aplicativos normalmente devem usar os métodos de criação da planilha
Limites
A versão 2.384.95 adiciona saída de planilha nativa em cache, disponibilidade somente leitura de filtro cruzado e expurgo explícito de membros históricos; a exibição nativa serializada de sem dados, a criação de Timeline e a serialização mais ampla de layout agrupado mantêm limites de aceitação separados