Salida nativa de tablas dinámicas, consultas con 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 reporte 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 en caso de éxito o -1 con un diagnóstico ante un estado no admitido o una colisión
Las vistas locales no vacías admitidas conservan los filtros actuales, las identidades exactas de miembros del caché, las jerarquías ordinarias, los dominios agrupados admitidos, los subtotales predeterminados o personalizados y cualquiera de los dos 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 permanecen disponibles, mientras que encoger o mover el reporte limpia únicamente los valores de propiedad anteriores sin cambios; la salida editada, la superposición con la fuente, las combinaciones, las fórmulas, los arreglos y otros reportes provocan rechazo antes de la mutación
La salida escalar importada exige adopción explícita con AAdoptExisting=True; las actualizaciones posteriores usan la propiedad persistente por celda individual, incluso después de guardar y reabrir
La operación lee los registros actuales del caché y no actualiza los datos de la fuente ni recalcula fórmulas; Cache.RefreshOnLoad=False es válido porque la hoja ahora contiene resultados nativos reales preparados
Las devoluciones de llamada de filtros 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 devoluciones de llamada, mientras que los filtros manuales y de Slicers persistidos admitidos conservan su representación en el formato
Los campos calculados del caché SUM admitidos y los elementos calculados de propiedad del caché usan el contrato de sumas de contexto descrito en campos calculados nativos de tablas dinámicas y elementos de propiedad del caché; las leyendas de miembros personalizadas y las combinaciones de diseño no admitidas provocan rechazo explícito, mientras que el diseño crudo generado admitido conserva el XML no relacionado y las máscaras actuales de miembros
TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean es el ayudante de diseño preparado de nivel más bajo en lxPivotXml
Su escritor recibe el rectángulo completo del reporte en orden por filas, incluidas las celdas en blanco, con desplazamientos basados en cero desde el ancla de la tabla; la verificación previa de XML y de la cuadrícula termina antes de la primera devolución de llamada, pero las escrituras de propiedad del llamador no pueden revertirse si una devolución de llamada lanza una excepción
La fachada del libro aporta un escritor de captura desacoplado para actualizaciones transaccionales de celdas; la vista previa preparada combinada y las cuadrículas nativas de Variant están acotadas a 4194304 celdas
La ruta 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 etiquetas repetidas
Defina Compact y Outline en el reporte 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 indicadores como True
property TXLSPivotField.RepeatLabels: Boolean;
RepeatLabels tiene False como valor predeterminado, se copia de forma independiente con el campo y lee o escribe la extensión nativa x14:pivotField fillDownLabels; repite las etiquetas de los ancestros en la salida tabular y de esquema y no tiene efecto sobre un campo cuyos indicadores compact y outline estén ambos habilitados
Cada campo de fila separado recibe su propia columna física, mientras que los campos compactos de esquema adyacentes comparten una columna de etiquetas; varias medidas en filas siguen CompactData, y varias medidas en columnas conservan leyendas de datos y totales generales independientes
Los subtotales tabulares predeterminados 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 la leyenda de cada medida
La salida nativa en caché deja en blanco las intersecciones ausentes de filas y columnas 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 medidas heredan el diseño del reporte en los metadatos nativos preparados, de modo que la actualización explícita de Excel conserve las leyendas apropiadas de campos y datos; la operación preserva la configuración viva de campos y las comprobaciones existentes de propiedad
Las extensiones importadas de etiquetas repetidas aceptan alias de espacios de nombres, incluidas las declaraciones en el propio elemento de extensión; el XML desconocido no relacionado permanece preservado por la ruta 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 del caché; las etiquetas generadas conservan los GroupItemLabels importados exactos, incluidos los Unicode y las leyendas de fechas localizadas
La agrupación se evalúa sobre un caché desacoplado, preservando los registros del caché vivo, los manejadores de elementos compartidos y las identidades de grupos; los límites inválidos, los intervalos cero, los dominios incompletos o los tipos de valores de elementos de grupo no admitidos provocan rechazo antes de que cambie la salida de la hoja
El TXLSPivotField.Position existente basado en cero determina el orden nativo estable del eje de fila o columna; las posiciones iguales conservan el orden de campos escrito por el autor, de modo que los campos recién creados con la posición predeterminada conservan su ordenamiento anterior
Las jerarquías nativas importadas de Año/Mes y de padres o miembros manuales conservan su secuencia explícita de ejes, mientras que los índices de campos del caché, los índices de campos de la 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 etiquetas de grupo o índices del caché
Los subtotales personalizados de filas admiten xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar y xlpsVarP, incluidas múltiples funciones seleccionadas, campos tabulares o de esquema y medidas en filas
Cada función agrega los registros originales de la fuente 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 personalizado 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 solicitud con tipo tan ambigua provoca rechazo 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 las leyendas personalizadas 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 función
Guardar, reabrir y volver a materializar conserva la agrupación, el orden de ejes y las identidades de subtotales admitidas; las vistas nativas importadas y los cachés con tipo copiados independientemente también se han verificado contra Excel tanto en la apertura inicial como en la actualización explícita
Cálculos nativos de visualización
Defina el ShowDataAs o ExtendedShowDataAs de cada campo de datos ordinario antes de llamar a MaterializeNativePivotTable; los modos de visualizació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 porcentajes de fila padre, columna padre y padre seleccionado, porcentaje acumulado y rangos densos ascendentes o descendentes
BaseField es el índice de campo de la tabla dinámica basado en cero para comparaciones, totales acumulados, porcentajes de padres seleccionados y rangos; las comparaciones usan la posición BaseItem basada en cero, o xlPivotBaseItemPrevious y xlPivotBaseItemNext para los miembros visibles adyacentes en el orden efectivo de visualización
Los porcentajes de fila padre y de columna padre eligen el campo de eje más interno correspondiente sin usar BaseField; un eje correspondiente ausente deja esos resultados en blanco
Los porcentajes simples dividen entre el agregado original en el ámbito relevante, incluidos los promedios no aditivos; los porcentajes acumulados suman los agregados mostrados de los miembros y usan el total original del eje para un campo base más interno, mientras que un campo base externo usa la suma a través de sus miembros restantes coincidentes, de modo que los promedios pueden exceder 100 por ciento
Los rangos nativos cuentan los valores agregados precedentes distintos, y las comparaciones preservan el comportamiento de Excel para blancos y errores en intersecciones ausentes, bases faltantes, divisores cero y 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 acumulado; cambiar un modo de visualización conserva las comprobaciones transaccionales de propiedad, colisión y presupuesto del reporte
Guardar y reabrir conserva 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 del caché no 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 a través de 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 vivos y la selección, y respeta FormulaArrayMemoryLimit; la falla de devoluciones de llamada, la reentrada, los enlaces inválidos o los miembros calculados agregados no admitidos lanzan una excepción sin confirmar cambios vivos
Consultar la disponibilidad no actualiza cachés, no recalcula fórmulas, no realiza E/S de archivos ni actualiza los indicadores nativos serializados de ausencia de datos; las aplicaciones no deberían inferir el estado nativo de la UI 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;
La devolución de llamada avanzada de registros recibe la vista previa desacoplada y un índice de registro basado en cero después del filtrado simple y agregado admitido; EvaluationSourceTable conserva la identidad original de la vista y el valor de retorno es el número de registros emitidos
Un filtro de reemplazo sustituye únicamente la devolución de llamada registrada del propietario aportado; los demás propietarios y el predicado externo permanecen activos, y una devolución de llamada 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 usar tras la validación completa y el remapeo de las vistas y Slicers enlazados admitidos
Devuelve el conteo total de elementos compartidos eliminados a través de todos los campos, cero para una operación exitosa sin efecto, 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 usar por campo, elegidos por el mayor índice original de elemento compartido
Los miembros retenidos conservan su orden relativo original y sus manejadores de objetos mientras los índices lógicos se compactan; los manejadores enlazados de campos y elementos, los indicadores manuales de ocultamiento y detalle, los miembros activos de página o comparación y las selecciones de Slicers conservan sus identidades
Los indicadores y límites del dominio se recalculan a partir del dominio retenido; las posiciones comprimidas importadas admitidas de filas/columnas y páginas se remapean explícitamente, mientras que las referencias ficticias de totales generales y los ordinales del pseudocampo de datos permanecen sin cambios
Los cachés locales ordinarios completos de hojas están admitidos; los cachés agrupados, calculados, de propiedades de miembros, OLAP, externos, incompletos o ambiguos y los metadatos opacos de identidades no admitidos provocan rechazo antes de la mutación
Eliminar un miembro activo de página o comparación, un subconjunto completo seleccionado de un Slicer o una intersección efectiva previamente no vacía provoca rechazo atómico; los atributos primitivos de miembros que se perderían durante la reconstrucción con tipo también provocan rechazo
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 del caché; las extensiones opacas no relacionadas no se asumen seguras
La purga no actualiza los datos de la fuente, no reescribe las celdas del reporte en la hoja, no invoca devoluciones de llamada de registros ni aplica los metadatos MissingItemsLimit automáticamente; la actualización sigue siendo de solo agregado a menos que esta operación se solicite explícitamente
Coordinación avanzada de purgas
TXLSPivotCache._PrepareMissingItemPurge devuelve un TXLSPivotCachePurgePlan opaco; las aplicaciones normalmente deberían usar la fachada del libro para que se incluyan todas las vistas y Slicers enlazados
MapItem y RemainingItemCount inspeccionan el remapeo del caché, StagePivotField registra un campo enlazado y devuelve su índice de preparación, y MapViewItemPosition inspecciona el mapeo de posición en el formato de ese campo; los miembros eliminados se mapean a -1 y RemovedCount reporta el conteo total de eliminaciones
Validate comprueba el esquema original, los registros, las identidades de propiedad de campos y elementos y las selecciones de vistas preparadas; Commit valida de nuevo y transfiere la propiedad preparada sin asignación ni devoluciones de llamada después del primer intercambio vivo
El plan es dueño de las instantáneas desacopladas, mantiene privado su caché preparado mutable, y nunca es dueño de los objetos originales del caché o de las vistas; mantenga vivos esos originales hasta que el Destroy del plan libere la preparación, y confirme cada plan una sola vez
La preparación de un campo rechazado revierte esa etapa para que el plan pueda reutilizarse; las mutaciones no admitidas después de la preparación provocan rechazo antes de la confirmación