HotXLS Docs

Materialización segura de tablas dinámicas en hojas

La versión 2.384.90 agrega evaluación aislada de tablas dinámicas y reemplazo protegido de resultados de hojas; la versión 2.384.92 extiende las fuentes locales admitidas a nombres definidos y tablas resueltos en cada llamada

Materializar una vista

if Workbook.RefreshPivotCache(Pivot.CacheId) <> 1 then
  raise Exception.Create('Pivot cache refresh failed');
if Workbook.MaterializePivotTable(Pivot) <> 1 then
  raise Exception.Create('Pivot output cannot be replaced safely');

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable): Integer calcula los resultados a partir del caché actual y los coloca en el FirstRow y el FirstCol de la vista; devuelve 1 en caso de éxito o -1 para fuentes no admitidas, destinos inseguros, fallas de evaluación o una mutación del libro rechazada

La actualización y el recálculo de la hoja siguen siendo operaciones explícitas; la materialización exitosa invalida las dependencias de cálculo para que los llamadores puedan recalcular las fórmulas posteriores cuando corresponda

La sobrecarga predeterminada acepta celdas de destino en blanco y celdas sin cambios de propiedad previa de la misma vista; las celdas ocupadas sin propiedad en cualquier parte dentro del rectángulo completo de salida provocan rechazo de la operación, incluidos los huecos que el escritor de resultados no llena

if Workbook.MaterializePivotTable(Pivot, True) <> 1 then
  raise Exception.Create('Existing Pivot values cannot be adopted safely');

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer puede adoptar explícitamente celdas escalares existentes dentro del rectángulo previo declarado de la vista en su primera materialización; no autoriza reemplazar fórmulas, miembros de arreglos, texto enriquecido, celdas con metadatos ni contenido fuera de ese rectángulo

Propiedad, redimensionamiento y movimiento

La vista retiene coordenadas exactas e instantáneas de valores con tipo para las celdas escritas; el guardado XLSX preserva esta propiedad en la definición de la tabla dinámica, de modo que las actualizaciones posteriores puedan validarla tras reabrir

Un contenido con tipo cambiado o una celda de propiedad no en blanco eliminada rechaza la actualización completa; los subtipos numéricos comparten una representación numérica canónica, mientras que el texto, los valores Boolean y los errores conservan identidades distintas

Encoger o mover un resultado limpia únicamente los valores de propiedad sin cambios que ya no se producen; los objetos de celda existentes, el formato y los comentarios permanecen disponibles, y las celdas no relacionadas quedan fuera del conjunto de propiedad

Cambiar FirstRow o FirstCol mueve la siguiente salida mientras las coordenadas de propiedad anteriores permanecen disponibles para la limpieza; un resultado vacío limpia los valores de propiedad y retiene una ubicación de solo ancla

Vista previa aislada

function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter): Integer;
property TXLSPivotTable.EvaluationSourceTable: TXLSPivotTable;

TXLSPivotTable.MakePreview usa copias independientes del caché y de la vista, incluidos los marcadores de posición de campos calculados, y las descarta después de la evaluación; el Make ordinario conserva su comportamiento existente de caché vivo

El escritor recibe desplazamientos de fila y columna basados en cero y valores con tipo; el valor de retorno sigue el conteo de celdas agregadas de Make, que es distinto del número de llamadas al escritor; un caché o escritor ausente devuelve cero, y las excepciones de evaluación o del escritor se propagan

Los predicados de registros del llamador y los filtros de propietarios registrados permanecen activos en las vistas previas, incluidas las selecciones de Slicers del libro; las devoluciones de llamada reciben la vista evaluada temporal y su caché temporal

TXLSPivotTable.EvaluationSourceTable devuelve la vista viva para una evaluación ordinaria y la vista viva original para una vista previa; úselo cuando una devolución de llamada necesite identificar una vista conectada, mientras lee los registros evaluados del Cache temporal de la devolución de llamada

Los propietarios de las devoluciones de llamada siguen siendo de propiedad del llamador; los objetos de vista previa y sus registros no deben retenerse después de que la devolución de llamada o la llamada de vista previa termine

Límites de seguridad

La materialización exige una vista y un caché registrados en el mismo libro y una fuente local admitida rectangular, de nombre definido o de tabla; la resolución de fuentes sigue los nombres y las extensiones de tablas actuales, y las fuentes no admitidas o sin resolver provocan rechazo antes de la mutación

La geometría actual de la fuente, otras ubicaciones de tablas dinámicas, las tablas estructuradas, los rangos de resultados de consultas, las celdas combinadas y los arreglos fijos o dinámicos no pueden intersectar la nueva salida ni las celdas de propiedad antiguas que necesiten limpieza; los totales de tablas permanecen protegidos aunque estén excluidos de los registros del caché

La validación y la preparación de la salida se ejecutan bajo una concesión de lectura, seguida del guardián ordinario de mutación del libro y de la comprobación de generación; una vista de libro de solo lectura congelada rechaza la materialización sin reemplazar celdas ni cambiar la geometría

Los filtros deben ser de solo lectura y seguir el contrato ordinario de escritor único del libro; el aislamiento evita que los cálculos normales de la vista previa cambien el caché vivo, pero las escrituras arbitrarias de devoluciones de llamada a través de objetos vivos capturados por separado no pueden revertirse

Esta operación materializa el diseño de resultados calculados de la biblioteca; la creación completa de diseño nativo de tablas dinámicas, la creación de UI de Slicers y la evaluación de visualización de ausencia de datos con filtro cruzado siguen siendo capacidades separadas