Documentación de HotXLS

Salida Pivot nativa, consultas de filtro cruzado y miembros ausentes

Salida nativa de hoja en caché

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

La operación prepara tanto la cuadrícula completa del informe nativo compacto, tabular o de esquema como su ubicación, rowItems, colItems y metadatos del eje de datos antes de confirmar juntos los valores de la hoja y la propiedad de la salida; devuelve 1 si tiene éxito o -1 con un diagnóstico ante un estado no admitido o una colisión

Las vistas locales admitidas no vacías retienen los filtros actuales, las identidades exactas de miembros de caché, las jerarquías ordinarias, los dominios agrupados admitidos, los subtotales por defecto o personalizados y cualquiera de los ejes de datos admitidos; la cuadrícula nativa usa los valores agregados originales en lugar de recombinar promedios mostrados u otros resultados no aditivos

Los objetos de celda existentes y el formato siguen disponibles, mientras que reducir o mover el informe limpia solo los valores propios anteriores sin cambios; la salida editada, la superposición con el origen, las combinaciones, las fórmulas, las matrices y otros informes se rechazan antes de la mutación

La salida escalar importada exige adopción explícita con AAdoptExisting=True; las actualizaciones posteriores usan la propiedad persistente de celda individual, incluso después de guardar y reabrir

La operación lee los registros actuales de la caché y no actualiza los datos del origen ni recalcula fórmulas; Cache.RefreshOnLoad=False es válido porque la hoja ya contiene resultados nativos reales preparados

Los callbacks de filtrado de registros del llamador participan en la vista previa desacoplada pero no tienen representación OOXML; la actualización nativa explícita de Excel no puede reproducir restricciones arbitrarias de callbacks, mientras que los filtros manuales y de Slicer persistidos admitidos conservan su representación en la interfaz

Los campos de caché calculados SUM admitidos y los elementos calculados propios de la caché usan el contrato de sumas de contexto descrito en Campos Pivot calculados nativos y elementos propios de la caché; los rótulos de miembros personalizados y las combinaciones de diseño no admitidas se rechazan explícitamente, mientras que el diseño crudo generado admitido retiene el XML no relacionado y las máscaras de miembros actuales

TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean es el helper de diseño preparado de nivel inferior en lxPivotXml

Su escritor recibe el rectángulo completo del informe en orden por filas, incluidas las celdas en blanco, con offsets de base cero desde el ancla de la tabla; el preflight de XML y cuadrícula termina antes del primer callback, pero las escrituras propiedad del llamador no pueden revertirse si un callback lanza

La fachada del libro aporta un escritor de captura desacoplado para las actualizaciones transaccionales de celdas; la vista previa preparada combinada y las cuadrículas nativas de Variant están acotadas a 4194304 celdas

La vía de vista previa nativa puede solicitar la orientación nativa de totales generales mediante el parámetro opcional AUseNativeGrandTotals de TXLSPivotTable.MakePreview; las llamadas existentes de un solo escritor y de escritor de diseño conservan su comportamiento anterior

Diseño y rótulos repetidos

Establece Compact y Outline en el informe y en cada campo de fila antes de materializar; los campos tabulares usan ambos indicadores como False, los campos de esquema usan Compact=False y Outline=True, y los campos compactos usan ambos como True

property TXLSPivotField.RepeatLabels: Boolean;

RepeatLabels tiene por defecto False, se copia de forma independiente con el campo y lee o escribe la extensión nativa x14:pivotField fillDownLabels; repite los rótulos de los ancestros en la salida tabular y de esquema y no tiene efecto en un campo cuyos indicadores compacto y de esquema están ambos activados

Cada campo de fila separado recibe su propia columna física, mientras que los campos de esquema compactos adyacentes comparten una columna de rótulos; varias medidas en filas siguen CompactData, y varias medidas en columnas conservan rótulos de datos y totales generales independientes

Los subtotales tabulares por defecto aparecen debajo de su grupo; el SubtotalTop de esquema selecciona la ubicación superior o inferior, mientras que las medidas en filas usan filas agregadas separadas debajo del grupo y conservan el rótulo de cada medida

La salida nativa en caché deja en blanco las intersecciones de fila y columna ausentes y preserva un cero numérico real; el Make ordinario y las vistas previas sin la opción nativa conservan su comportamiento anterior de resultados vacíos

Los campos inactivos y de medida heredan el diseño del informe en los metadatos nativos preparados para que la actualización explícita de Excel conserve los rótulos adecuados de campos y datos; la operación preserva los ajustes activos de campos y las comprobaciones de propiedad existentes

Las extensiones importadas de rótulos repetidos aceptan alias de espacios de nombres, incluidas declaraciones en el propio elemento de extensión; el XML desconocido no relacionado sigue preservándose en la vía de materialización nativa

Miembros agrupados, orden de ejes y subtotales personalizados

La salida nativa admite grupos completos de rangos numéricos, grupos de fechas y grupos manuales de miembros representados por los metadatos de agrupación con tipo existentes de la caché; los rótulos generados conservan los GroupItemLabels importados exactos, incluidos los rótulos Unicode y de fechas localizadas

La agrupación se evalúa sobre una caché desacoplada preservando los registros de la caché activa, los manejadores de elementos compartidos y las identidades de grupo; los límites no válidos, los intervalos cero, los dominios incompletos o los tipos de valor de elementos de grupo no admitidos se rechazan antes de cambiar la salida de la hoja

El TXLSPivotField.Position existente de base cero determina el orden nativo estable del eje de filas o columnas; las posiciones iguales conservan el orden de campos escrito, de modo que los campos recién creados con la posición por defecto conservan su ordenamiento anterior

Las jerarquías nativas importadas de Year/Month y de padre/miembros manuales conservan su secuencia explícita de ejes, mientras que los índices de campos de caché, los índices de campos de vista y las identidades de base de cálculo de visualización permanecen sin cambios; los grupos manuales respetan el orden explícito de elementos de la tabla dinámica en lugar de ordenar rótulos de grupo o índices de caché

Los subtotales de fila personalizados admiten xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar y xlpsVarP, incluidas varias funciones seleccionadas, campos tabulares o de esquema y medidas en filas

Cada función agrega los registros originales del origen en su propio ámbito de subtotal; sus metadatos de fila preparados identifican la función seleccionada de forma independiente, preservando el comportamiento de actualización explícita de Excel para los cálculos no aditivos y los resultados vacíos o de error

Una selección de subtotal personalizada importada excluye el subtotal automático implícito incluso cuando defaultSubtotal está ausente en el XML nativo; las aplicaciones no deben combinar xlpsDefault con funciones personalizadas, y una petición con tipo tan ambigua se rechaza antes de la mutación

Varios niveles de campos de columna con subtotales, las combinaciones no admitidas de eje de datos compacto, los miembros contraídos y los rótulos personalizados quedan fuera de este contrato de salida nativa; los campos y elementos calculados tienen sus propios requisitos más estrictos de SUM e identidad de miembros, y la preservación cruda no implica soporte para recalcular o materializar una característica

Guardar, reabrir y volver a materializar conservan la agrupación, el orden de ejes y las identidades de subtotal admitidas; las vistas nativas importadas y las cachés con tipo copiadas de forma independiente también se han verificado contra Excel tanto en la apertura inicial como en la actualización explícita

Cálculos de presentación nativos

Establece el ShowDataAs o ExtendedShowDataAs de cada campo de datos ordinario antes de llamar a MaterializeNativePivotTable; los modos de presentación básicos y extendidos son mutuamente excluyentes

Los modos básicos incluyen diferencia, porcentaje de un elemento base, porcentaje de diferencia, total acumulado, porcentaje de fila, columna o total general e índice; los modos extendidos incluyen los porcentajes de fila padre, columna padre y padre seleccionado, el porcentaje acumulado y los rangos densos ascendentes o descendentes

BaseField es el índice de campo de tabla dinámica de base cero para comparaciones, totales acumulados, porcentajes de padre seleccionado y rangos; las comparaciones usan la posición BaseItem de base cero, o xlPivotBaseItemPrevious y xlPivotBaseItemNext para los miembros visibles adyacentes en el orden de presentación efectivo

Los porcentajes de fila padre y columna padre eligen el campo del eje más interno correspondiente sin usar BaseField; un eje correspondiente ausente deja esos resultados en blanco

Los porcentajes simples dividen por el agregado original en el ámbito correspondiente, incluidos los promedios no aditivos; los porcentajes acumulados suman los agregados mostrados de miembros y usan el total original del eje para un campo base más interno, mientras que un campo base más externo usa la suma de sus miembros restantes coincidentes, de modo que los promedios pueden superar el 100 por ciento

Los rangos nativos cuentan los valores agregados precedentes distintos, y las comparaciones conservan el comportamiento de Excel con blancos y errores para las intersecciones ausentes, las bases ausentes, los divisores cero y los límites de anterior o siguiente; los porcentajes simples tratan un numerador ausente como cero

Los totales generales usan la semántica nativa del modo seleccionado, incluidos los totales en blanco a lo largo de un eje de comparación o acumulación; cambiar un modo de presentación conserva las comprobaciones transaccionales de propiedad, colisión y presupuesto del informe

Guardar y reabrir conservan el modo básico o extendido elegido y las identidades base, y los metadatos nativos preparados admiten una actualización explícita de Excel; el Make ordinario y las vistas previas sin la opción nativa conservan su contrato de cálculo existente

Disponibilidad de filtro cruzado de Slicers

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

Esta consulta de solo lectura evalúa los registros actuales admitidos de la caché que no es OLAP ignorando la propia selección de este Slicer y reteniendo las selecciones de otros Slicers, los filtros manuales, los predicados del llamador y los filtros agregados aplicables

La disponibilidad es la unión entre las vistas conectadas; los miembros históricos sin registros coincidentes no tienen datos, las medidas en blanco no tienen datos, y las medidas de texto no vacío, Boolean, cero, error y fecha cuentan como datos bajo el contrato nativo verificado

La consulta usa una concesión de lectura y una vista previa desacoplada de registros, preserva los manejadores activos y la selección, y respeta FormulaArrayMemoryLimit; el fallo del callback, la reentrada, las vinculaciones no válidas o los miembros calculados agregados no admitidos lanzan sin confirmar cambios activos

Consultar la disponibilidad no actualiza cachés, no recalcula fórmulas, no realiza E/S de archivo ni actualiza los indicadores nativos serializados de sin datos; las aplicaciones no deben inferir el estado de la UI nativa a partir de esta operación de solo lectura

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

El callback avanzado de registros recibe la vista previa desacoplada y un índice de registro de base cero tras el filtrado simple y agregado admitido; EvaluationSourceTable conserva la identidad original de la vista y el valor devuelto es el número de registros emitidos

Un filtro de reemplazo sustituye solo el callback registrado del propietario suministrado; los demás propietarios y el predicado externo siguen activos, y un callback de reemplazo no nil exige un propietario no nil

Purga explícita de miembros históricos

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

TXLSXWorkbook.PurgePivotCacheMissingItems(ACacheId: Integer; ARetainMissingItemsPerField: Integer = 0): Integer elimina los miembros sin uso tras la validación completa y el remapeo de las vistas y Slicers enlazados admitidos

Devuelve el número total de elementos compartidos eliminados en todos los campos, cero para una operación nula con éxito, o -1 con el diagnóstico 1402; los registros actuales retienen cada miembro referenciado, más como máximo el número solicitado de miembros sin uso por campo elegidos por el mayor índice original de elemento compartido

Los miembros retenidos conservan su orden relativo original y sus manejadores de objeto mientras los índices lógicos se compactan; los manejadores de campos y elementos enlazados, los indicadores manuales de ocultación y detalle, los miembros activos de página o comparación y las selecciones de Slicer conservan sus identidades

Los indicadores y límites del dominio se recalculan a partir del dominio retenido; las posiciones comprimidas importadas admitidas de fila/columna y página se remapean explícitamente, mientras que las referencias ficticias de totales generales y los ordinales del pseudo-campo de datos permanecen sin cambios

Se admiten las cachés locales ordinarias completas de hoja; las cachés agrupadas, calculadas, de propiedad de miembro, OLAP, externas, incompletas o ambiguas y los metadatos de identidad opacos no admitidos se rechazan antes de la mutación

Eliminar un miembro activo de página o comparación, todo un subconjunto seleccionado de Slicer o una intersección efectiva previamente no vacía se rechaza atómicamente; los atributos primitivos de miembros que se perderían durante la reconstrucción con tipo también se rechazan

La extensión conocida de propiedad de materialización permanece sin cambios porque sus coordenadas y tokens de valores con tipo no contienen índices de miembros de caché; las extensiones opacas no relacionadas no se dan por seguras

La purga no actualiza los datos del origen, no reescribe las celdas del informe de la hoja, no invoca callbacks de registros ni aplica automáticamente los metadatos de MissingItemsLimit; la actualización sigue siendo de solo adición salvo que esta operación se solicite explícitamente

Coordinación avanzada de la purga

TXLSPivotCache._PrepareMissingItemPurge devuelve un TXLSPivotCachePurgePlan opaco; las aplicaciones normalmente deben usar la fachada del libro para que se incluyan todas las vistas y Slicers enlazados

MapItem y RemainingItemCount inspeccionan el remapeo de la caché, StagePivotField registra un campo enlazado y devuelve su índice de preparación, y MapViewItemPosition inspecciona el mapeo de posición de la interfaz de ese campo; los miembros eliminados se mapean a -1 y RemovedCount informa el número total de eliminaciones

Validate comprueba el esquema original, los registros, las identidades de propiedad de campos y elementos y las selecciones de vista preparadas; Commit valida de nuevo y transfiere la propiedad preparada sin asignación ni callbacks tras el primer intercambio activo

El plan posee instantáneas desacopladas, mantiene privada su caché preparada mutable y nunca posee los objetos originales de caché o vista; mantén vivos esos originales hasta que el Destroy del plan libere la preparación, y confirma cada plan solo una vez

La preparación rechazada de un campo revierte esa fase para que el plan pueda reutilizarse; las mutaciones no admitidas tras la preparación se rechazan antes de confirmar