Docs HotXLS

Matérialisation sûre des Pivot en feuille

La version 2.384.90 ajoute l'évaluation Pivot isolée et le remplacement protégé des résultats en feuille ; la version 2.384.92 étend les sources locales prises en charge aux noms définis et aux tables résolus à chaque appel

Matérialiser une vue

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 calcule les résultats à partir du cache courant et les place aux FirstRow et FirstCol de la vue ; il renvoie 1 en cas de succès ou -1 pour des sources non prises en charge, des destinations dangereuses, un échec d'évaluation ou une mutation de classeur refusée

L'actualisation et le recalcul de feuille restent des opérations explicites ; une matérialisation réussie invalide les dépendances de calcul pour que les appelants recalculent les formules en aval au moment opportun

L'overload par défaut accepte les cellules de destination vides et les cellules inchangées précédemment détenues par la même vue ; des cellules occupées sans propriétaire, où que ce soit dans le rectangle de sortie complet, rejettent l'opération, y compris les trous que le writer de résultats ne remplit pas

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

TXLSXWorkbook.MaterializePivotTable(ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer peut adopter explicitement, lors de la première matérialisation, les cellules scalaires existantes à l'intérieur du rectangle précédent déclaré de la vue ; cela n'autorise pas le remplacement de formules, de membres de tableaux, de texte enrichi, de cellules porteuses de métadonnées ni de contenu hors de ce rectangle

Possession, redimensionnement et déplacement

La vue conserve les coordonnées exactes et des instantanés typés des valeurs pour les cellules écrites ; l'enregistrement XLSX préserve cette possession dans la définition Pivot, afin que les mises à jour ultérieures puissent la valider après réouverture

Un contenu typé modifié ou une cellule détenue non vide supprimée rejette la mise à jour entière ; les sous-types numériques partagent une représentation numérique canonique, tandis que texte, Boolean et erreurs gardent des identités distinctes

Rétrécir ou déplacer un résultat n'efface que les valeurs détenues inchangées qui ne sont plus produites ; les objets de cellules, le formatage et les commentaires existants restent disponibles, et les cellules sans rapport restent hors de l'ensemble possédé

Changer FirstRow ou FirstCol déplace la prochaine sortie tandis que les coordonnées de possession précédentes restent disponibles pour le nettoyage ; un résultat vide efface les valeurs détenues et conserve un emplacement réduit à l'ancre

Prévisualisation isolée

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

TXLSPivotTable.MakePreview utilise des copies indépendantes du cache et de la vue, espaces réservés des champs calculés compris, puis les abandonne après l'évaluation ; le Make ordinaire conserve son comportement existant sur cache actif

Le writer reçoit des offsets de lignes et de colonnes en base zéro et des valeurs typées ; la valeur de retour suit le nombre de cellules d'agrégats de Make, distinct du nombre d'appels du writer ; un cache ou un writer absent renvoie zéro, et les exceptions d'évaluation ou du writer se propagent

Les prédicats d'enregistrements de l'appelant et les filtres de propriétaires enregistrés restent actifs dans les prévisualisations, sélections de slicer du classeur comprises ; les callbacks reçoivent la vue évaluée temporaire et son cache temporaire

TXLSPivotTable.EvaluationSourceTable renvoie la vue active pour une évaluation ordinaire et la vue active d'origine pour une prévisualisation ; utilisez-la quand un callback doit identifier une vue connectée, tout en lisant les enregistrements évalués depuis le Cache temporaire du callback

Les propriétaires de callbacks restent détenus par l'appelant ; les objets de prévisualisation et leurs enregistrements ne doivent pas être conservés après la fin du callback ou de l'appel de prévisualisation

Frontières de sécurité

La matérialisation exige une vue et un cache enregistrés dans le même classeur et une source locale prise en charge — rectangulaire, nom défini ou table ; la résolution de source suit les noms et étendues de tables courants, et des sources non prises en charge ou non résolues sont rejetées avant mutation

La géométrie source courante, les autres emplacements Pivot, les tables structurées, les plages de résultats de requêtes, les cellules fusionnées et les tableaux fixes ou dynamiques ne peuvent pas intersecter la nouvelle sortie ni les anciennes cellules détenues à nettoyer ; les totaux de table restent protégés même s'ils sont exclus des enregistrements du cache

La validation et la mise en staging de la sortie s'exécutent sous un bail de lecture, suivies par la garde de mutation ordinaire du classeur et la vérification de génération ; une vue de classeur en lecture seule figée refuse la matérialisation sans remplacer de cellules ni changer la géométrie

Les filtres doivent être en lecture seule et suivre le contrat ordinaire d'écriture unique du classeur ; l'isolation empêche les calculs de prévisualisation ordinaires de changer le cache actif, mais des écritures arbitraires de callback via des objets actifs capturés séparément ne peuvent pas être annulées

Cette opération matérialise la disposition de résultats calculés de la bibliothèque ; la création complète de dispositions Pivot natives, l'UI de slicer et l'évaluation d'affichage cross-filter sans données restent des capacités séparées