HotXLS Release Notes
Historique des versions pour les fonctionnalités visibles par l'utilisateur de HotXLS, les corrections, les améliorations XLS/XLSX, les mises à jour d'export, les changements de compatibilité et les changements de documentation
Dernière publication
- Dernière version : 2.384.120 ; Date de publication : 2026-10-09
Version 2.384.120
Added
- La capture portable XLS classique prend en charge les graphiques ordinaires en colonnes, barres, lignes, nuage de points, secteurs, anneau et aires à série unique, avec valeurs stockées locales validées, apparence de base et bornes de tracé, de titre et de légende déclarées par l'appelant
- Les déclarations d'apparence de graphiques en lecture seule conservent les identités de la feuille et du graphique, les dimensions explicites du cadre, les tailles effectives en points de la légende et la géométrie de police native pour une sortie PDF, SVG et PNG détachée
- Des helpers bornés inspectent les références de formules stockées simples et les cellules de graphiques en cache, sans évaluation de formule ni expansion de cellules éparses
Fixed
- La capture de graphiques classiques préserve les tailles fractionnaires de polices et de marqueurs stockées, l'appartenance des sources et les baux de lecture, et rejette avant la sortie les enregistrements mal formés, les apparences irrésolubles et les budgets de ressources épuisés
- Les mises à jour de propriétés à valeur double des graphiques rejettent les valeurs non finies avant comparaison ou mutation
- L'initialisation répétée de cellules portables natives libère les chaînes managées antérieures pendant la capture
Version 2.384.119
Fixed
- L'inspection de graphiques classiques valide le texte de séries stocké, les noms de courbes de tendance et les séparateurs d'étiquettes de données avant d'appliquer l'état typé, et libère les modèles partiels quand un texte mal formé lève une erreur
- Les séparateurs d'étiquettes de données Unicode compressés conservent l'intégralité de leurs caractères stockés
Version 2.384.118
Added
- L'inspection de graphiques classiques expose les diamètres de marqueurs en points, tailles fractionnaires comprises, tout en préservant les unités stockées d'origine
Fixed
- Les tables de remplissage natives prises en charge des graphiques classiques décodent les propriétés après les entrées complexes, et les tables mal formées préservent le remplissage typé précédent
Version 2.384.117
Added
- Des helpers d'encodage en octets explicites préservent les nulls incorporés et rejettent le texte que la page de code sélectionnée ne peut pas représenter
Changed
- Le texte, les formules et les métadonnées de classeur BIFF5 classiques utilisent leur encodage déclaré sur Windows, Linux et macOS, avec des longueurs en octets encodés et des bornes de caractères complets
- Le texte de graphiques hérité pris en charge conserve son décodage d'origine après édition ou copie de la page de code, et est transcodé explicitement avant enregistrement sous un encodage différent
Fixed
- L'Unicode BIFF8 compressé préserve les unités de code exactes, et les styles personnalisés hérités, le texte de graphiques et les continuations double octet de caches de formules utilisent leurs dispositions d'enregistrements réelles
- Le calcul de texte Unicode natif, les critères, les clés de recherche, les liaisons de formules locales ainsi que la recherche et le remplacement classiques préservent la correspondance de casse prise en charge
- La recherche de styles nommés résout la première entrée stockée sans la traiter comme un nom absent
- Les lectures répétées d'entrées ZIP libèrent les métadonnées d'en-tête antérieures tout en conservant le comportement des flux stockés et déflatés concurrents
Version 2.384.116
Added
- Les champs calculés SUM locaux de tableau croisé dynamique évaluent les formules à partir des sommes de contexte des nœuds feuilles, des sous-totaux et des totaux généraux, y compris les dépendances absentes des mesures affichées
- Les éléments calculés détenus par le cache conservent les identités natives de membres, les dépendances masquées et l'ordre de résolution global dans les champs pris en charge à membres texte non regroupés
- Les calculs d'affichage d'éléments calculés et les filtres d'agrégat pris en charge conservent l'ordre des membres visibles, l'ordre des filtres d'origine et des identités sans ambiguïté pour les mesures affichées
Fixed
- La projection de dates des formules natives de tableau croisé dynamique préserve le système de dates du classeur lors de l'import de cache, du clonage et du calcul
- Le nettoyage des caches d'éléments manquants préserve l'appartenance validée des rapports matérialisés dans les deux systèmes de dates du classeur et les rapports hérités enregistrés
- Les métadonnées de tableau croisé calculé non prises en charge et les sorties natives éditées sont rejetées avant de modifier les résultats de la feuille
Version 2.384.115
Added
- La sortie native portable PDF, SVG et PNG prend en charge le texte enrichi, les formes modélisées, les images ordinaires, les images dans la cellule, les cases à cocher booléennes et sept familles de graphiques XLSX en cache prises en charge
- Les plans d'impression immuables des classeurs appliquent sur Linux et macOS des zones d'impression complètes, des titres de lignes et colonnes répétés, des sauts de page, la configuration du papier, les marges, l'orientation, le centrage, la mise à l'échelle et l'ordre des pages
- La géométrie de police native explicite prend en charge une capture vérifiée à la génération sans changer le fournisseur de géométrie du classeur
Fixed
- Le mode Ajuster à la page survit aux aller-retours du classeur et ignore les mises à l'échelle en pourcentage obsolètes, dimensions d'ajustement illimitées comprises
- Les polices de titres de graphiques, l'apparence de ligne, le remplissage et les bordures de marqueurs pris en charge conservent les valeurs explicites importées et définies, y compris le noir
- Le texte enrichi préserve les surcharges explicites à false et distingue l'apparence effective des segments lors de la réutilisation de chaînes et de la comparaison sémantique
Version 2.384.114
Added
- Les applications natives Linux x64 et macOS ARM64 chargent, modifient, calculent et enregistrent des classeurs BIFF8 classiques, propriétés de document prises en charge et chiffrement RC4 compris
- Le stockage composé portable prend en charge les portées imbriquées, les grands conteneurs DIFAT chaînés, les métadonnées et l'appartenance explicite de l'interface de stockage native
Fixed
- Les classeurs CryptoAPI 128 bits annoncent un fournisseur cryptographique compatible et conservent des propriétés de document en clair lisibles
- Les horodatages de documents natifs utilisent la bonne époque FILETIME et préservent les valeurs UTC sur toutes les plateformes
- Les noms définis classiques partagent une identité Unicode canonique entre la recherche de portée, les formules et la réouverture du classeur
- Les séparateurs échappés de formats de date et les littéraux entre guillemets incorporés conservent l'intégralité du format de date sélectionné
Version 2.384.113
Added
- L'effacement de plages et le collage de texte Unicode prennent en charge une annulation et un rétablissement atomiques bornés, avec vérification préalable de protection et de structure
- Les images locales typées dans la cellule et les formats Checkbox prennent en charge les aller-retours XLSX, les métadonnées d'accessibilité et des modifications de contenu tenant compte de l'appartenance
- Les formats Checkbox épars de lignes et de colonnes préservent la priorité, les effacements explicites et les cellules absentes lors des modifications et des aller-retours XLSX
- La prise en charge étendue de XLSB inclut formules et caches, noms, fusions, liens hypertextes, volets, tableaux et filtres
- Les API de classeur natives Linux x64 et macOS ARM64 chargent, modifient, calculent et enregistrent les fichiers XLSX, XLSB et ODS pris en charge
- La sortie native de tableau croisé dynamique prend en charge les regroupements numérique, par date et manuels ainsi que les onze fonctions de sous-total personnalisées
Fixed
- Les noms à portée utilisent une normalisation Unicode et une correspondance de casse cohérentes sur Windows, Linux et macOS, sans abandonner accents ni symboles
- Les formules d'agrégation modernes compilent de manière cohérente avec Free Pascal sous Windows
- L'ouverture d'un autre classeur remplace les styles nommés au lieu de conserver les définitions de styles du fichier précédent
- Le contenu moderne d'images et de contrôles survit à l'annulation de plages et à l'enregistrement sans matérialiser les cellules absentes
- Les caches de formules importés conservent les métadonnées de valeurs d'origine, et les métadonnées ordinaires sont distinguées du contenu d'images dans la cellule
- La comparaison sémantique distingue le contenu d'images local, les métadonnées d'accessibilité et les formats de contrôles hérités effectifs grâce à une traversée éparse bornée
Version 2.384.112
Added
- Les tests, l'extraction et le remplacement par expression régulière prennent en charge le texte UTF-16, les captures, la diffusion de tableaux et une évaluation bornée sur Windows, Linux x64 et macOS ARM64
- GROUPBY et PIVOTBY prennent en charge les callbacks d'agrégat à portée, plusieurs mesures, les en-têtes, les filtres, les totaux hiérarchiques, le tri et les pourcentages relatifs
Fixed
- Les arguments scalaires de SUM conservent la conversion des booléens et du texte numérique, tandis que l'agrégation de plages et de tableaux garde ses règles d'exclusion existantes
- Les littéraux booléens à portée et les formules de callbacks d'agrégat survivent au stockage des fonctions futures et à la réouverture du classeur
Version 2.384.111
Added
- La sortie locale native de tableau croisé dynamique prend en charge les différences et pourcentages par élément de base, les totaux cumulés, les pourcentages de lignes et de colonnes, l'index, les pourcentages du parent, les pourcentages cumulés et le classement dense
Fixed
- Les calculs d'affichage conservent la sémantique native des totaux, des valeurs manquantes, du diviseur zéro et des membres triés, moyennes non additives comprises
- Les modes d'affichage étendus et les identités de champs de base survivent à l'enregistrement, à la réouverture et au rafraîchissement explicite par Excel
Version 2.384.110
Added
- La sortie locale native de tableau croisé dynamique prend en charge les dispositions compacte, tabulaire et en plan, les libellés d'ancêtres répétés, le placement par défaut des sous-totaux et plusieurs mesures sur l'un ou l'autre axe de données
Fixed
- Les paramètres de libellés répétés survivent aux alias d'espaces de noms importés et à l'enregistrement/réouverture, tandis que la sortie native distingue les intersections absentes du zéro numérique
- Les métadonnées de disposition préparées gardent la cohérence des libellés de champs et de données quand Excel rafraîchit explicitement les rapports générés
Version 2.384.109
Added
- La comparaison de classeurs distingue les valeurs typées et les grands entiers exacts, prend en charge des tolérances numériques finies et, en option, la comparaison des caches de formules stockés, des styles et de la géométrie
- La comparaison sémantique bornée couvre les noms, règles, tableaux, ordre de dessin, régions au style de blanc, segments de texte enrichi effectifs, modèles locaux de tableau croisé dynamique, sélections de Slicer et état des Timeline pris en charge
Changed
- La comparaison préserve les cellules compactées et absentes, résout les identités de ressources vers leurs valeurs effectives et conserve le résultat précédent en cas de modèle non pris en charge ou d'épuisement des ressources
Fixed
- La validation de précision des paramètres REAL typés de base de données compile avec Delphi XE5 tout en conservant les contrôles de valeur exacte, de débordement et de null
Version 2.384.108
Added
- Les aller-retours ODS conservent le texte et les auteurs de notes ordinaires, les filtres de valeurs représentables et personnalisés, la protection explicite des cellules et une protection de feuille équivalente sans mot de passe
- Les rapports de conversion conservent les pertes de métadonnées précises lors des copies de feuilles et des enregistrements ultérieurs, expressions de filtre non prises en charge et protections non équivalentes comprises
Fixed
- Les enregistrements de flux ODS annulés ou en échec préservent les octets, la taille et la position de la destination grâce à une préparation par fichiers temporaires bornée
- Les enregistrements ODS réussis démarrant à une position de flux non nulle préservent le préfixe et corrigent les décalages d'entrées ZIP
Version 2.384.107
Added
- L'inspection des formules stockées et les formules d'agrégat de tableau croisé dynamique tenant compte des références fonctionnent dans les contextes d'évaluation Classic XLS, XLSX, en lecture seule et isolés, y compris les résultats de tableaux disponibles et les erreurs typées
- Les requêtes d'agrégat de tableau croisé dynamique respectent les membres visibles modélisés, les filtres de rapport et les sous-totaux pris en charge grâce à une évaluation de cache détachée bornée, sans rafraîchir les données sources
Fixed
- Les caches de tableau croisé dynamique XLS natifs d'Excel conservent les valeurs numériques en ligne successives et les métadonnées de validité de cache courantes au lieu de renvoyer des totaux de valeurs répétées incorrects
- Les références de tableau croisé dynamique incluent la zone de filtre de rapport modélisée au-dessus de l'emplacement du tableau principal
Version 2.384.106
Added
- Les requêtes automatiques de base de données lient les paramètres littéraux typés et de cellules stockées dans l'ordre positionnel, en préservant Unicode, texte vide, zéro, booléens, dates et nulls, sans substituer de valeurs dans le texte SQL
- Les paramètres de cellules lisent les caches de formules disponibles et les valeurs stockées compactées sans recalcul ni matérialisation, avec une validation de métadonnées bornée et une application transactionnelle des résultats
Fixed
- Les paramètres de date Jet et ACE préservent les valeurs DATE, TIME et TIMESTAMP via des liaisons OLE DATE typées, indépendamment des projections d'horodatage dépendantes des paramètres régionaux
Version 2.384.105
Added
- Les métadonnées de formule lisent l'identité réelle du fichier référencé, les formats de nombre de base pris en charge, les couleurs négatives, les parenthèses positives, l'alignement du texte, l'état verrouillé, la largeur de colonne et le mode de calcul dans les contextes d'évaluation XLS et XLSX
- L'inspection détachée des styles de base et l'empreinte d'axes éparse préservent les cellules stockées et compactées, les valeurs par défaut de la feuille, les couleurs du thème et l'appartenance du classeur emprunté
Changed
- Les métadonnées de largeur de colonne renvoient leur largeur en caractères arrondie et le drapeau de largeur par défaut sous forme de tableau à deux colonnes ; les informations d'environnement d'application Excel indisponibles et les formats non classables signalent des erreurs explicites
Version 2.384.104
Added
- La validation d'import prend en charge les types scalaires stricts, les bornes numériques et de dates, les systèmes de dates Excel explicites, l'unicité composite et les relations inter-colonnes
- Les violations structurées identifient la feuille, la cellule, la règle, la colonne associée et la première ligne en double, tandis que la validation des valeurs stockées préserve les cellules compactées et signale les caches de formules indisponibles sans recalcul implicite
Version 2.384.103
Added
- Les requêtes texte automatiques rafraîchissent les fichiers à largeur fixe en s'appuyant sur les débuts de champs déclarés, les encodages de caractères pris en charge, la conversion typée des champs, les champs ignorés et la sélection d'en-tête ou de première ligne
- Le rafraîchissement à largeur fixe préserve les guillemets littéraux, supprime le remplissage des champs et rejette les bornes invalides, les entrées surdimensionnées et l'annulation avant d'appliquer les modifications à la feuille
Version 2.384.102
Changed
- Les audits de symboles de formules classiques scannent plus vite tout en préservant les constats de fonctions et de noms, la déduplication insensible à la casse, la portée et l'ordre des constats
Fixed
- Les enregistrements de classeurs Windows, le patching direct de paquets, la sortie PDF et la sortie d'images de pages peuvent remplacer atomiquement un fichier existant détenu via des métadonnées de partage en suppression ou des handles de lecture sur les systèmes de fichiers pris en charge, tout en conservant les contrôles de verrouillage, la protection en lecture seule et le chemin hérité sur les systèmes non pris en charge
Version 2.384.101
Added
- Les tableaux de sélecteurs de zone d'INDEX se diffusent avec les sélecteurs de lignes et de colonnes sur les tableaux calculés et les unions de références de même feuille prises en charge, en conservant l'orientation, les types de valeurs sélectionnées et les erreurs individuelles
- Les noms définis et les liaisons LET conservent l'identité de référence multi-zone prise en charge, et CHOOSE scalaire conserve la référence sélectionnée pour le calcul en aval
Fixed
- INDEX accepte un argument de zone explicite valant 1 pour les sources calculées et distingue les sélecteurs de zone invalides, manquants, fractionnaires et hors limites
- Les unions inter-feuilles et les unions de tableaux calculés sont rejetées selon leur contrat d'erreurs pris en charge au lieu d'acquérir une identité de référence incorrecte
- Les références invalides qualifiées par des feuilles locales existantes conservent leurs erreurs de référence dans les formules directes et les noms définis, noms de feuilles entre guillemets compris, sans changer les chaînes de formules ni interpréter les qualificateurs inconnus comme des feuilles locales
Version 2.384.100
Added
- Sortie PDF, SVG et PNG portable headless sous Linux, avec fichiers de polices explicites, façonnage du texte natif, ressources bornées et publication exclusive de fichiers par étapes
- Capture Windows en lecture seule des rectangles Classic XLS et XLSX pris en charge vers des instantanés immuables transférables, y compris résultats de formules stockés, Tableaux à portée et mises en forme conditionnelles, dimensions physiques et fusions complètes
Fixed
- La validation d'apparence portable rejette de manière cohérente les représentations d'enum invalides sur les builds de compilation optimisés
Version 2.384.99
Added
- Rafraîchissement automatique explicite des requêtes pour les connexions Windows Text, ADO, ODBC et Web prises en charge, avec enregistrement de fournisseurs personnalisés et résultats bornés
Fixed
- Les relations de résultats de requête natives et les identités de colonnes persistent lors des enregistrements et réouvertures adossés à un tableau ou autonomes pris en charge
- Les types de connexions de fournisseur invalides sont rejetés avant l'exécution, sans modifier les résultats de la feuille
Version 2.384.98
Added
- Création locale de Timeline de tableau croisé dynamique, connexions de vues partagées, filtrage inclusif de journées entières et suppression protégée qui efface la sélection ou la préserve
- Rafraîchissement natif explicite des éléments sans données des Slicers dans les vues connectées, avec limites de ressources cumulatives, annulation et préservation de la sélection et de l'identité des éléments
Fixed
- La gestion native de l'appartenance des relations et filtres de Timeline préserve les sélections importées prises en charge lors de la matérialisation, de l'enregistrement et de la réouverture
- Les paramètres de filtres croisés des Slicers de tableau croisé dynamique persistent via leur représentation tabulaire native
- La découverte des Timeline conserve le décodage UTF-16 des classeurs et des parties liées pendant le chargement Open XML
Version 2.384.97
Added
- Noms définis scalaires et de tableaux calculés dans les calculs d'agrégat numériques et de comptage pris en charge, avec conversion native, suivi des dépendances et limites de ressources
Fixed
- L'agrégation numérique propage les erreurs typées des références de feuilles locales, les moyennes vides renvoient des erreurs de division par zéro, et les références nommées en échec conservent leurs erreurs sans reprendre la traversée partielle
Version 2.384.96
Added
- Arguments de tableaux calculés pour l'assemblage de textes et les calculs pris en charge de médiane, statistiques d'ordre, centile, quartile, rang de pourcentage, modes multiples et covariance de population
Changed
- La collecte des tableaux et références préserve la conversion scalaire native, les erreurs typées, l'appariement de covariance d'origine et les limites de ressources de calcul
Fixed
- Le calcul du point médian de la médiane finie évite le débordement de même signe, et les centiles exclusifs acceptent des rangs d'extrémité et singleton valides
Version 2.384.95
Added
- Sortie native transactionnelle de rapports de tableau croisé dynamique compacts, avec valeurs de feuille synchronisées, métadonnées de disposition et appartenance de cellules persistée
- Disponibilité en lecture seule des membres de Slicer dans les vues connectées sous d'autres filtres actifs
- Nettoyage explicite des membres historiques de cache de tableau croisé dynamique avec rétention configurable et remappage coordonné des sélections liées
Changed
- La sortie native de tableau croisé dynamique prise en charge conserve les filtres manuels et les libellés actuels tout en rejetant, avant toute mutation, les dispositions non prises en charge ou les cellules détenues modifiées
Version 2.384.94
Added
- Vues de tableaux croisés dynamiques à cache partagé et création locale de Slicers de tableau croisé dynamique avec bornes de feuille explicites
- Suppression transactionnelle de Slicer qui efface sa restriction ou préserve la sélection comme filtres de tableau croisé dynamique ordinaires, y compris la politique de membres futurs
- Reconstruction des caches groupés numériques, de dates et discrets avec identités de membres stables
- Aperçus détachés des métadonnées de disposition compacte native de tableau croisé dynamique utilisant les identités exactes de membres et d'agrégats
Fixed
- La réouverture d'un classeur peuplé remplace désormais les caches typés de tableau croisé dynamique précédents, et les liens natifs de Slicer créés restent reconnus par Excel
- La sérialisation des caches groupés préserve les domaines de membres natifs déclarés et les attributs officiels de total général et d'axe de données
Version 2.384.93
Added
- Un lecteur et un writer XLSB validés pour les valeurs de cellules typées, les styles de base, les vues de feuilles ordinaires et les dimensions
- Sortie binaire explicite lors de l'enregistrement de classeurs vers fichier ou flux, avec détection automatique des entrées binaires et rapports de fidélité de conversion
Changed
- La conversion XLSB prépare des paquets complets et rejette les fonctionnalités ou paramètres de calcul non pris en charge avant la sortie, y compris les enregistrements non contrôlés ou tolérant les pertes
Fixed
- Les niveaux de compression ZIP configurés sont appliqués avant l'initialisation du deflateur
Version 2.384.92
Added
- Rafraîchissement transactionnel de caches de tableau croisé dynamique et matérialisation sûre des feuilles pour les sources locales prises en charge de noms définis et de tableaux
- Recherche de noms définis à portée de feuille et bornes de sources résolues par l'appelant pour le rafraîchissement de cache
Fixed
- L'identité des sources locales et la portée des noms définis survivent aux déplacements et renommages de feuilles, noms entre guillemets et Unicode compris
- Le XML de formules des noms définis omet le signe égal initial optionnel, requis uniquement par la syntaxe de formules en mémoire
- L'appartenance des totaux de tableau suit le nombre réel de lignes de totaux, en préservant toutes les lignes de données quand seul l'indicateur UI de totaux est présent
Version 2.384.91
Added
- Entrées de tableaux calculés et résultats typés pour la transposition, le produit matriciel, les déterminants et l'inversion de matrices
- Vecteurs de sélecteurs ordonnés, doublons et indices négatifs pour la sélection de lignes et de colonnes
- Vecteurs de recherche calculés et demandes de recherche à valeur tableau, y compris tranches de recherche scalaires complètes et valeurs de repli typées
Changed
- Les opérations matricielles, le scan de recherche, la traversée des sélecteurs, la copie et le remplissage respectent les limites d'étapes d'évaluation et de mémoire de tableaux dans toute la composition
Fixed
- Les caches de texte des formules et résultats de tableaux s'affichent correctement dans Excel avant recalcul
- Les caches d'erreurs enrichies modernes incluent la version du classeur et les déclarations de fonctionnalités de calcul requises pour l'affichage natif en cache
- Les options de recherche et d'aplatissement rejettent les valeurs hors limites avant la conversion numérique, tandis que les options fractionnaires suivent la troncature native
- Les résultats vides de take, drop et flatten conservent leurs erreurs de calcul typées
Version 2.384.90
Added
- Les aperçus isolés de résultats de tableau croisé dynamique conservent les sélections de Slicer partagées et les filtres de l'appelant sans modifier le cache calculé actif
- La matérialisation sûre des feuilles pour les sources locales de tableau croisé dynamique prises en charge prépare les résultats, rejette les contenus et structures en conflit, et préserve les objets cellule, mises en forme et commentaires existants
- L'appartenance exacte des valeurs typées survit à l'enregistrement et à la réouverture XLSX, ce qui permet un redimensionnement et un déplacement sûrs des résultats ainsi que l'adoption explicite des valeurs scalaires de tableau croisé dynamique existantes
Fixed
- La suppression de la dernière vue de Slicer de tableau croisé dynamique liée est rejetée avant de retirer son dessin, son cache, son nom réservé ou sa sélection
- L'effacement des vues de Slicer valide chaque cache concerné avant mutation et nettoie ensemble les vues autorisées, les dessins et les caches non liés
Version 2.384.89
Added
- INDEX accepte des sélecteurs de lignes et de colonnes à valeur tableau sur les tableaux calculés et les plages de feuilles, y compris les sélections appariées et les produits croisés lignes-colonnes
Fixed
- Les résultats de sélecteurs préservent les valeurs et erreurs typées, remplissent les positions de sélecteurs manquantes avec #N/A, et respectent les limites de mémoire de calcul et d'étapes d'évaluation
- Les sélecteurs scalaires fractionnaires qui se tronquent à zéro produisent des propagations complètes de lignes ou colonnes, tandis que les sélecteurs négatifs renvoient #VALUE! avant troncature
- La sélection de plages scalaire conserve le comportement de référence, et les propagations de sélecteurs se rétablissent des obstructions, se redimensionnent et recalculent après enregistrement et réouverture
Version 2.384.88
Added
- Inspection typée des membres, sélection de membres partagés et effacement pour les caches de Slicer de tableau croisé dynamique non-OLAP importés pris en charge
- Les calculs de tableaux croisés dynamiques connectés croisent les sélections de Slicer avec des restrictions indépendantes sur d'autres champs et des filtres d'enregistrements fournis par l'appelant
Changed
- Les changements de sélection valident chaque connexion et chaque membre avant application, rejettent les masques importés ambigus d'un même champ et préservent les représentations de cache non prises en charge
- Les changements de collections de caches de Slicer respectent la protection en écriture du classeur quand ils affectent des calculs de tableaux croisés dynamiques connectés
- La suppression des caches de Slicer de tableau croisé dynamique non-OLAP liés est rejetée atomiquement afin de préserver un état cohérent des filtres à l'exécution et enregistrés
Fixed
- Les sélections de Slicer de tableau croisé dynamique éditées et les masques de membres des vues connectées s'enregistrent ensemble tout en conservant les espaces de noms importés et les extensions inconnues
- Les connexions de Slicer prises en charge suivent les identités de feuilles enregistrées et résolvent les identifiants de cache étendus indépendamment des identifiants de cache ordinaires du classeur
- Les définitions de tableaux croisés dynamiques importées restent associées à leurs vues d'origine quand les feuilles sont réordonnées
Version 2.384.87
Changed
- Le rafraîchissement local de caches rectangulaires de tableau croisé dynamique préserve les identités existantes de champs et de membres, ajoute les nouveaux membres typés, et garde les filtres et sélections de vues partagées liés à leurs membres d'origine après réordonnancement, suppression ou réintroduction de la source
- Les en-têtes sources correspondent aux champs de base de données par nom, ce qui permet de réordonner les colonnes tandis que les champs calculés conservent leurs formules et reçoivent de nouveaux espaces réservés d'enregistrements vides pour l'évaluation suivante
- Le rafraîchissement valide et prépare la source complète avant de mettre à jour le cache, en rejetant les schémas, types de sources, regroupements dérivés et nouveaux membres de groupes discrets non mappés non pris en charge, sans changements partiels
Fixed
- Les valeurs d'erreur de tableau croisé dynamique conservent leurs types et codes dans les éléments partagés et les enregistrements lors des enregistrements et réouvertures XLSX
- Les domaines d'éléments partagés rafraîchis recalculent les drapeaux de types et les bornes représentables, et les métadonnées de caches XLSX décrivent précisément les valeurs mixtes, dates, erreurs, booléens et blancs
- Le rafraîchissement de la source lit les cellules absentes sans créer de cellules de feuille et compare les en-têtes de champs Unicode sans conversion restrictive de leur texte
- Les vues de tableaux croisés dynamiques rafraîchies et enregistrées incluent les nouveaux membres de cache avant les éléments de sous-total, tout en conservant l'ordre existant des membres, les drapeaux de masquage et les extensions de disposition importées
- Les sélections de page restent liées au bon membre quand l'ordre des vues diffère de l'ordre du cache, les champs calculés ne décalent plus les enregistrements sources enregistrés, et les horodatages de rafraîchissement utilisent la représentation numérique XLSX
Version 2.384.86
Added
- INDEX accepte des tableaux calculés et des constantes avec sélection scalaire, sélection de tableau complet et extraction de lignes ou colonnes, tout en conservant le comportement de référence pour les sources de plages
- SORT et UNIQUE acceptent des tableaux calculés et des constantes, ce qui permet une composition directe avec FILTER, SEQUENCE, LET et d'autres expressions produisant des tableaux
Changed
- Les expressions de tableaux composées conservent le redimensionnement automatique des propagations XLSX, le calcul de tableaux à plage fixe, les erreurs typées et le recalcul après enregistrement et réouverture
Fixed
- La sélection et le tri de tableaux tronquent les options numériques fractionnaires, le texte d'option booléenne invalide renvoie #VALUE!, et les opérations sur tableaux calculés respectent les limites de mémoire et d'étapes d'évaluation
Version 2.384.85
Added
- Les tableaux dynamiques XLSX se calculent désormais dans des plages de propagation redimensionnées automatiquement, préservent les obstructions de l'utilisateur avec #SPILL!, prennent en charge les références de propagation et l'intersection implicite explicite, et récupèrent l'appartenance des propagations en cache après réouverture
- La vérification préalable de conversion signale les pertes connues du format cible, et l'enregistrement contrôlé peut rejeter ces pertes avant d'écrire un fichier ou flux existant
- La sortie explicite de modèles avec macros préserve les projets VBA existants dans les paquets XLTM
- Le rafraîchissement de tables de requêtes fourni par l'appelant prend en charge des résultats à schéma fixe bornés, des plages de tableaux et filtres synchronisées, la progression, l'annulation et le rollback transactionnel
Changed
- Les bandes de rapports répétées clonent des conversations en fil complet avec des identités remappées et préservent le rollback quand une cible échoue
- La validation booléenne personnalisée ODS, les bornes à valeur formule prises en charge, les sources de listes et les références qualifiées se traduisent avec re-ancrage des cellules de base ; les définitions et références de cellules non prises en charge sont omises ensemble
Fixed
- Les formules de tableaux à plage fixe évaluent l'arithmétique brute de plages élément par élément, MAP multi-tableaux accepte des paramètres lambda correspondants, et FILTER évalue les tableaux calculés et les masques
- Les erreurs modernes #SPILL! et #CALC! conservent les métadonnées XLSX typées de valeurs enrichies tout en préservant les métadonnées importées sans rapport et les catégories de valeurs enrichies
- Les formules XLSX nouvellement créées s'enregistrent avec des séparateurs d'arguments canoniques et des préfixes de fonctions futures pour l'interopérabilité avec Excel ; l'enregistrement préserve l'expression en mémoire et la réouverture renvoie la syntaxe de formule canonique
- Les séries de graphiques locales prises en charge rafraîchissent les caches numériques, texte, dates, erreurs, bulles et catégories hiérarchiques après modifications et recalcul
- La pagination native restitue les étendues fusionnées via leur ancre d'origine, découpe les fragments de page et supprime les bordures intérieures et le quadrillage
Version 2.384.84
Changed
- Les exemples de prise en main Delphi et C++Builder incluent désormais une commande client pratique avec dates typées, prix, remises et totaux calculés, et vérifient les classeurs XLS et XLSX enregistrés après réouverture
- L'exemple de facture relie désormais une facture imprimable à des conditions de paiement éditables et un registre de reçus, en calculant remises, taxes, paiements et solde restant dû
- L'exemple de disposition de feuille démontre désormais la création, l'énumération, la suppression et la préservation après réouverture de titres fusionnés
- Neuf familles supplémentaires d'exemples API ciblés ont été déplacées vers Miscellaneous, pour que le catalogue principal reste centré sur des workflows métier complets et des outils interactifs
Removed
- Les exemples autonomes minimaux de cellules fusionnées et de texte enrichi ont été consolidés dans les exemples de disposition de feuille et de tableau de bord
Version 2.384.83
Changed
- Le catalogue de démos sépare désormais les expériences complètes et les workflows consistants des recettes API ciblées dans le dossier Miscellaneous de chaque plateforme, avec navigation directe et projets prêts à construire dans les deux niveaux
Removed
- Trois démos redondantes de plages et de disposition de feuilles ont été supprimées ; leurs scénarios complets restent disponibles dans RangeOps et SheetLayout
Version 2.384.82
Changed
- Les galeries de tableaux de bord Delphi et C++Builder s'ouvrent directement sur un classeur peuplé avec totaux en direct, graphiques rendus, détails éditables, scénarios de prix et exports du résultat courant
- La visite des API fournit une navigation directe vers tableaux de bord, données de ventes, aperçus de graphiques et recettes API, avec un jeu de données répétable couvrant les douze mois
- Les exemples embarquent localement leurs unités de scénario requises et leurs ressources de manifest, ce qui permet de copier chaque projet sans dossier commun séparé
Fixed
- La visite des API crée ses données de ventes avant de saisir les formules du tableau de bord, ce qui permet à sa vitrine en direct de s'initialiser correctement
- Les graphiques de la vitrine en direct rafraîchissent leurs valeurs et libellés en cache après recalcul, et les exports répétés de la galerie C++Builder préservent les modifications courantes sans accumuler des feuilles de rapports générées
Version 2.384.81
Changed
- Les exemples de copie de feuilles vérifient le contenu indépendant, les formats remappés, les formules et les objets incorporés après réouverture de leur sortie
- Les exemples de systèmes de dates, de recherche, de regroupement, de formules de tableaux et d'images vérifient leur comportement distinct et signalent les sorties en échec via un code de sortie non nul
Fixed
- Les plages AutoFilter XLS classiques conservent leurs bornes complètes de lignes et colonnes après enregistrement et réouverture, filtres copiés avec critères actifs compris
- Les galeries de tableaux de bord créent les feuilles référencées avant de saisir les formules, calculent les totaux avant export et génèrent tous les formats compagnons demandés même quand une autre sortie échoue
- La galerie de tableaux de bord C++Builder produit les fichiers compagnons CSV, HTML et RTF documentés
- Les rapports compilés préservent le signalement d'échec ordinaire dans les builds statiques Win64 C++Builder classiques quand une destination ne peut pas être remplacée
- Les exemples API interactifs signalent les échecs d'export PDF, HTML et CSV au lieu de prétendre que les fichiers ont été écrits
- La vitrine de fonctionnalités termine sa démonstration de hachage sémantique pris en charge et valide ses classeurs enregistrés sans invoquer les instantanés de dessins modernes non pris en charge
Version 2.384.80
Changed
- Le catalogue d'exemples regroupe les projets par tâche d'apprentissage et identifie les points d'entrée recommandés, les leçons propres à chaque format et les noms de projets compatibles
- Les exemples de disposition de feuilles et de relocalisation de plages partagent des scénarios complets tout en conservant leurs noms de projets et de sorties existants
- Les exemples de mémoire, CSV avancé, impression, propriétés de document, zones de texte et protection de feuilles démontrent des workflows complets avec vérification des données enregistrées et signalement explicite des échecs
Fixed
- Les zones de texte XLSX rouvertes conservent leurs relations de dessin lors d'un nouvel enregistrement, si bien que les annotations restent disponibles à travers des cycles répétés d'enregistrement et de réouverture, sans déclarations d'espaces de noms XML en double
- Les exemples de conversion par lot respectent Skip existing avant d'ouvrir les sources ou d'invoquer les writers, et vérifient les codes de succès des classeurs avant de signaler la fin
- L'exemple de facture inclut les conditions de paiement et son titre complet dans la zone imprimable
- L'exemple console de mise en page démarre avec des privilèges utilisateur ordinaires au lieu de déclencher la détection d'installateur Windows
Version 2.384.79
Fixed
- Les enregistrements de fichiers ODS avec options d'export conservent la destination existante quand la sérialisation échoue ou que l'enregistrement est annulé, et signalent de manière cohérente les erreurs de remplacement de destination
- Les options d'export ODS passent par le cycle de vie d'enregistrement normal, y compris la politique de recalcul, l'annulation via la progression, les diagnostics et la protection en écriture du classeur pour la sortie vers fichier ou flux
- Les enregistrements de flux XLSX respectent la politique de recalcul configurée : les valeurs en cache sont conservées en mode manuel et les formules en attente de recalcul sont rafraîchies sur demande
- Les notifications d'enregistrement XLSX et ODS arrivées à terme ne transforment plus une sortie déjà validée en échec pour annulation
- Quand l'initialisation ou la finalisation d'un patch de feuille de calcul en streaming échoue, les handles du fichier source sont libérés, ce qui permet aux appelants de nettoyer leurs sources temporaires et de réutiliser le writer après un échec d'initialisation
Version 2.384.78
Fixed
- Les copies et clones de plages préservent la mise en forme virtuelle en intersection et ne remplacent la mise en forme en superposition antérieure qu'à l'intérieur de la destination, y compris pour les copies qui se chevauchent et la mise en forme inter-classeurs
- Les réinitialisations explicites de mise en forme restent efficaces après enregistrement et réouverture de classeurs avec mise en forme par défaut des lignes ou des colonnes
- Les cellules XLSX qui utilisent explicitement la mise en forme par défaut du classeur conservent ses polices, remplissages et formats de nombre personnalisés
Version 2.384.77
Fixed
- Les cibles de mise en forme conditionnelle et de validation de données sur des lignes ou colonnes entières suivent les modifications de lignes et colonnes ainsi que le clonage de plages quand elles sont entièrement contenues dans la source, avec une géométrie de cible bornée et des ancres relatives de formules préservées
- Les styles de blancs répétés finis importés d'ODS conservent toute leur étendue de plage utilisée, et les classeurs nouvellement créés ou réinitialisés indiquent la version actuelle de la bibliothèque dans les propriétés du document
- Les copies de cellules de lignes, colonnes et feuilles entières conservent le stockage épars, effacent les contenus remplacés de la destination sans étendre les coordonnées vides, et préservent les données sources qui se chevauchent ainsi que la mise en forme inter-classeurs
Version 2.384.76
Fixed
- Les règles de mise en forme conditionnelle et de validation de données s'appliquent désormais de manière cohérente aux cibles absolues, inversées, de lignes entières, de colonnes entières et séparées par des espaces, lors des recherches, suppressions, calculs conditionnels et contrôles de validation
- Les zones cibles mal formées ou hors grille ne correspondent plus à des cellules, tandis que les zones valides de la même règle restent actives ; les statistiques conditionnelles sur toute la grille conservent le stockage épars des cellules
- Les cibles de validation ODS utilisent des ancres de cellules valides pour les lignes et colonnes entières, et des cibles conditionnelles équivalentes qui se chevauchent ne créent plus de règles en double à la réouverture
Version 2.384.75
Fixed
- Les règles ODS de comparaison de cellules et d'expression conservent dans la sortie compatible Excel l'intégralité de leurs plages cibles, qu'il s'agisse de lignes entières, de colonnes entières ou de larges plages ; les cellules porteuses de blancs répétés gardent des plages éparses compactes et préservent les règles qui se chevauchent ainsi que les métadonnées de la feuille
- La réouverture des zones de blancs stylés répétés d'ODS garde leur mise en forme de base compacte, et les règles conditionnelles standard conservent leur priorité et leur couverture en cas de chevauchement à l'intérieur des zones fusionnées
Version 2.384.74
Fixed
- La mise en forme conditionnelle ODS conserve les surcharges prises en charge de police, d'arrière-plan et de format de nombre lors de l'enregistrement et de la réouverture, réinitialisations explicites comprises ; les règles avec des surlignages ou des plages cibles différents restent séparées
- La mise en forme conditionnelle XLSX conserve les formats de nombre intégrés et personnalisés, y compris ceux utilisés uniquement par une règle conditionnelle ; l'enregistrement ne supprime plus ces formats personnalisés et ne fait plus pointer les règles vers un autre format
- Les styles de pourcentage ODS incluent le symbole pour cent exigé par les autres applications tableur et se rouvrent sans dupliquer ce symbole
Version 2.384.73
Fixed
- Copier du texte vers le presse-papiers, lire du texte du presse-papiers et coller du texte ou des données XML Spreadsheet n'échouent plus de façon aléatoire sous Windows 10 et 11. Après chaque changement du presse-papiers, l'Explorateur et le Clipboard User Service (historique du presse-papiers) ouvrent le presse-papiers pendant quelques millisecondes pour le lire ; les opérations texte n'essayaient de l'ouvrir qu'une seule fois et pouvaient échouer avec « accès refusé » pendant ce moment
- Toutes les opérations du presse-papiers utilisent désormais la même politique que le copier-coller au format BIFF8 (format Excel) : elles réessaient d'ouvrir le presse-papiers pendant environ 500 ms. Quand une autre application garde le presse-papiers plus longtemps, l'opération échoue toujours et le contenu existant du presse-papiers reste inchangé
Version 2.384.72
Fixed
- L'ouverture d'un fichier ODS lit correctement le format de nombre General. Excel et LibreOffice écrivent General comme un style de nombre sans précision du nombre de décimales, ce qui était lu comme deux décimales fixes, si bien qu'une valeur telle que 1.5 s'affichait 1.50 ; ces cellules ne portent désormais aucun format de nombre, comme dans l'application source
- Le texte autour d'un nombre General est conservé, par exemple
General" kg"
Version 2.384.71
Fixed
- Les fichiers ODS enregistrés par Excel ou LibreOffice ne signalent plus une plage utilisée couvrant toute la feuille. Les deux donnent à chaque ligne et à chaque colonne une taille allant jusqu'à la ligne 1048576 et la colonne 16384 ; les lignes vides à hauteur automatique gardent désormais la hauteur par défaut, et les tailles de colonnes qui vont jusqu'à la dernière colonne deviennent la largeur de colonne standard de la feuille. Un fichier Excel de 10 lignes, rouvert puis réenregistré, passe d'environ 2.8 MB à quelques KB
- Les hauteurs de lignes définies à la main, et les hauteurs automatiques des lignes ayant du contenu (par exemple des lignes agrandies pour accommoder le texte renvoyé à la ligne), restent conservées
- L'enregistrement vers ODS écrit la largeur de colonne standard de la feuille (
StandardWidth) dans les colonnes sans largeur propre ; elle était auparavant abandonnée, puisque ODS n'a pas de largeur de colonne par défaut à l'échelle de la feuille
Version 2.384.70
Fixed
- Les fichiers ODS enregistrés par Excel ou LibreOffice s'ouvrent de nouveau en millisecondes. Les deux garnissent chaque ligne jusqu'à la colonne 16384 et ajoutent un bloc de remplissage jusqu'à la ligne 1048576 ; un fichier de 10 lignes venant d'Excel prenait plus de 5 minutes à s'ouvrir, et un fichier de LibreOffice n'en finissait pas
- Les cellules de remplissage vides qui ressemblent exactement au style de cellule Default du document ne sont plus transformées en cellules vides mises en forme ; une feuille Excel de 10 lignes en gagnait environ 180 000. Les cellules vides avec leur propre remplissage, bordure, police, alignement, format de nombre ou protection restent conservées
Version 2.384.69
Fixed
- Les mises en forme conditionnelles enregistrées vers ODS apparaissent désormais dans Excel. Les règles de valeur (égal, entre, supérieur à, etc.) et les règles de formule sont aussi écrites sous forme de conditions ODF
style:mapstandard sur les cellules qu'elles couvrent, la seule forme que lise Excel ; Excel ouvrait auparavant les fichiers ODS de HotXLS sans aucune de ces règles - LibreOffice importe désormais les règles de valeur ODS écrites par HotXLS avec leur véritable opérateur et leurs bornes ; il transformait auparavant chacune d'elles en « égal à 0 »
- L'ouverture d'un fichier ODS lit les mises en forme conditionnelles stockées sous forme de conditions
style:map, telles qu'écrites par Excel et les autres producteurs ODF. Quand un fichier porte aussi les mêmes règles sous la forme propre à LibreOffice, chaque règle est lue une seule fois - L'ouverture d'un fichier ODS lit l'écriture des règles de valeur propre à LibreOffice (
=5,between(1,10),!="x") ; les fichiers de versions antérieures de HotXLS s'ouvrent toujours comme avant
Version 2.384.68
Fixed
- Les formules qui appliquent un opérateur à une plage multi-cellules ou à un tableau en ligne, comme
=SUM(A1:B1*{10,100}),=SUM((A1:B2>2)*1)ou=MAX(A1:B2-1), sont stockées comme Excel 365 les stocke, si bien qu'Excel affiche le même résultat que HotXLS : dans XLSX sous forme de formules de tableau dynamique à cellule unique, dans XLS sous forme de formules matricielles à une seule cellule. Excel les ouvrait auparavant avec intersection implicite (=SUM(@A1:B1*@{10,100})) et affichait #VALUE! ou une valeur erronée - Les formules matricielles XLS écrivent leurs références et constantes de tableau sous forme matricielle, comme le fait Excel ; Excel évaluait auparavant les formules matricielles écrites par HotXLS avec intersection implicite
- Les fichiers XLSX avec formules de tableau dynamique (y compris celles créées avec
SetDynamicArrayFormula) s'ouvrent dans Excel ; Excel refusait auparavant le fichier entier parce que les métadonnées de tableau dynamique utilisaient un identifiant d'extension dont la casse différait
Version 2.384.67
Fixed
- Les comparaisons de texte suivent l'ordre d'Excel dans les deux moteurs : elles ignorent la casse et utilisent le tri par mot de la locale système, si bien que les tirets et les apostrophes ne servent qu'à départager les égalités (
"a-b">"ab"est TRUE) et que les autres signes de ponctuation se trient avant les chiffres et les lettres ("a~b">"ab"et"a_b">"ab"sont FALSE). Cela vaut pour les opérateurs de comparaison, les critères>text/<textde COUNTIF, SUMIF, de la famille des *IFS et des fonctions de base de données, les comparaisons de tableaux, les recherches, les fonctions de type SORT et le tri de plages - VLOOKUP et HLOOKUP comparent le texte sans tenir compte de la casse, si bien que
VLOOKUP("ABC",...)trouve « abc », comme dans Excel
Version 2.384.66
Fixed
- La mise en forme conditionnelle à base de formules écrite vers ODS est désormais reconnue par LibreOffice : la règle est stockée sous la forme
formula-is(...)avec sa cellule de base, la forme qu'écrit LibreOffice lui-même. Auparavant, LibreOffice lisait chaque règle de ce type comme une simple règle « valeur de cellule égale à 0 » - Les formules de mise en forme conditionnelle écrites vers ODS traduisent les tableaux en ligne, les unions, les références de colonnes et de lignes entières et conservent les
$de la même manière que les formules de cellules (COUNTIF($A:$A,A1)>1devientCOUNTIF([.$A:.$A];[.A1])>1) - L'ouverture d'un fichier ODS lit la mise en forme conditionnelle à base de formules écrite par LibreOffice (
formula-is) ainsi que les fichiers de versions antérieures de HotXLS
Version 2.384.65
Fixed
- Les références de colonnes et de lignes entières (
A:A,$A:$B,1:1,$1:$2) dans les formules écrites vers ODS utilisent la forme de référence d'OpenFormula ([.A:.A]). Excel ouvrait autrefois ces cellules sous la forme=SUM(A:(A))avec #NAME?, ou abandonnait la formule ; les fichiers ODS de HotXLS affichent désormais les mêmes formules et les mêmes valeurs dans Excel et LibreOffice
Version 2.384.64
Fixed
- Les fonctions de base de données (DSUM, DCOUNT, DCOUNTA, DAVERAGE, DGET et les autres) traitent un critère textuel sans opérateur comme un « commence par », comme le fait Excel :
abdans la plage de critères correspond à abc, ab et AB, et les caractères génériques s'appliquent toujours (a?correspond à toute entrée de deux caractères ou plus commençant par a).=abet<>abcontinuent de comparer l'entrée entière
Version 2.384.63
Added
- Les formules peuvent contenir des constantes de tableau en ligne telles que
{1,2;3,4}(colonnes séparées par des virgules, lignes par des points-virgules, avec des nombres, du texte, des valeurs TRUE / FALSE et des valeurs d'erreur) et des unions de références telles que(A1:B2,D4), dans les deux moteurs, XLS comme XLSX ; leur saisie échouait auparavant avec "invalid formula syntax" - Les constantes de tableau en ligne sont évaluées comme des tableaux (
=SUM({1,2}*{3,4}),=ROWS({1,2,3;4,5,6}),=SUMPRODUCT(A1:A2,{1;10})), et les unions fonctionnent dans SUM, COUNT, AVERAGE, MIN, MAX et COUNTA, dans AREAS, dans ISREF et dans l'argument area_num d'INDEX
Fixed
- Les fichiers XLS stockent les constantes de tableau en ligne de façon à ce qu'Excel les lise : la constante était auparavant écrite comme une référence, qu'Excel affichait sous la forme
=#N/A; les formules XLS qui contiennent des constantes de tableau en ligne ou des unions sont également relues avec leur texte de formule
Version 2.384.62
Fixed
- L'opérateur d'intersection (une espace entre deux références) renvoie les cellules couvertes par les deux références, comme dans Excel :
=SUM(A1:B2 B1:B2)vaut 6 au lieu de 2, des références sans cellule commune donnent #NULL!, et une intersection peut être passée à des fonctions qui acceptent des références, comme ROWS, COLUMNS et INDEX. Cela vaut pour les deux moteurs, pour les formules calculées et pour les formules stockées dans les cellules - Les fichiers XLS gardent les formules d'intersection utilisables dans Excel : les plages référencées sont désormais écrites comme des références, si bien qu'Excel ne lit plus
=SUM(A1:B2 B1:B2)comme=SUM(@A1:B2 @B1:B2)ni n'affiche #VALUE! - Une intersection utilisée comme valeur unique avec plus d'une cellule commune prend la cellule située sur la ligne ou la colonne de la formule, comme n'importe quelle référence multi-cellules
Version 2.384.61
Fixed
- SUMPRODUCT accepte des expressions de tableau comme
(B1:B2>0)*1,--(B1:B2>0),B1:B2*C1:C2et un argument unique, dans les deux moteurs, XLS comme XLSX ; elles renvoyaient auparavant #N/A. Des arguments de formes différentes renvoient #VALUE!, une erreur à l'intérieur d'un argument est renvoyée, et le texte et les valeurs logiques comptent pour 0, comme dans Excel - Les expressions d'opérateurs sur des plages à l'intérieur de SUM, COUNT, AVERAGE, MIN, MAX et COUNTA sont évaluées élément par élément, comme avec les tableaux dynamiques d'Excel :
=SUM((B1:B2>0)*1)compte les deux lignes au lieu de n'utiliser que la première cellule - TRUE compte pour 1 en arithmétique :
=TRUE*1renvoyait -1 - Les comparaisons élément par élément traitent un élément vide comme 0, "" ou FALSE pour s'aligner sur l'autre côté, et comparent les valeurs logiques comme des valeurs logiques ; si l'on joint une valeur logique avec
&dans un tableau, on obtient TRUE / FALSE
Version 2.384.60
Fixed
- Rechercher et remplacer par caractères génériques avec correspondance de la cellule entière (
FindText,ReplaceText,FindTextIn,ReplaceTextIndans les deux moteurs) traite la cellule entière comme le fait Excel :a*btrouve désormaisabcb, qui était rejeté parce que la correspondance s'arrêtait au premierb - Dans Rechercher et remplacer par caractères génériques,
~rend littéral le caractère qui le suit et un~final est ignoré, comme dans Excel :a~btrouveab, eta~~btrouvea~b
Version 2.384.59
Fixed
- Les heures de création et de modification des documents XLSX (
Created,Modified) et les propriétés personnalisées à valeur de date sont lues correctement quand l'horodatage comporte des fractions de seconde (2026-03-15T08:30:00.123Z) ou un décalage de fuseau horaire (+08:00,-05:00) : l'heure est convertie en heure locale au lieu d'être prise telle quelle pour de l'heure locale - Les horodatages sans heure (
2026-07-01) sont lus comme cette date ; les horodatages avec une heure mais sans fuseau, que le format W3CDTF n'autorise pas, restent lus comme heure locale
Version 2.384.58
Fixed
- L'AutoFit XLSX via
TXLSAutoFit(FitXlsxSheet,FitXlsxSheetColumns,FitXlsxSheetRows,MarkSheet) mesure chaque cellule dans la police avec laquelle elle est affichée ; depuis 2.384.46, il prenait la police suivante de la liste de polices du classeur, si bien qu'un titre en gras pouvait être mesuré dans la petite police d'une autre cellule et ressortir trop étroit - L'AutoFit utilise aussi la police qu'une cellule hérite de son style de ligne ou de colonne
Version 2.384.57
Fixed
- « Précision telle qu'affichée » (
FullPrecision = False) dans le moteur XLSX arrondit désormais comme Excel et le moteur XLS : les formats de pourcentage gardent deux décimales supplémentaires (0.1234 affiché comme0.0%stocke 0.123, pas 0.1), les valeurs négatives et zéro utilisent leur propre section de format, et les moitiés s'arrondissent en s'éloignant de zéro (2.5 affiché comme0stocke 3, pas 2) - Les deux moteurs honorent les virgules de mise à l'échelle par milliers sous « précision telle qu'affichée » : 12345.678 affiché comme
0.0,(12.3) stocke 12300, comme dans Excel - Un résultat de formule logique dans une cellule avec format de nombre n'est plus transformé en -1 par la « précision telle qu'affichée » du moteur XLS
Version 2.384.56
Fixed
- Les fichiers ODS écrits par HotXLS déclarent les espaces de noms de leurs préfixes de formule, si bien que LibreOffice évalue les formules au lieu d'afficher #VALUE! dans chaque cellule de formule
Version 2.384.55
Fixed
- Les formules écrites vers ODS gardent leur signification : les tableaux en ligne utilisent le séparateur de lignes d'OpenFormula (
{1,2;3,4}devient{1;2|3;4}au lieu d'une seule ligne), une union de références comme(A1,B2)devient l'opérateur~au lieu de deux arguments de fonction, et les références absolues gardent leurs marqueurs$ - La relecture d'une telle union depuis ODS n'ajoute plus une seconde paire de parenthèses, si bien que ces formules survivent intactes à un aller-retour XLSX vers ODS vers XLSX
Version 2.384.54
Fixed
- Les fichiers XLS protégés par mot de passe et enregistrés au format Excel 5.0/95 (obfuscation XOR) s'ouvrent désormais dans Excel. La clé stockée dans le fichier est dérivée du mot de passe au lieu d'être aléatoire, et le tableau d'obfuscation utilise la rotation de bits qu'Excel attend ; auparavant, Excel signalait un mot de passe erroné pour chacun de ces fichiers, et avec la seule clé corrigée, il signalait le fichier comme endommagé
- Les classeurs à obfuscation XOR sont lus avec le même tableau corrigé, si bien que les fichiers dont la clé correspond au mot de passe sont déchiffrés comme Excel les chiffre ; les fichiers XOR écrits par des versions antérieures de HotXLS s'ouvrent toujours
Version 2.384.53
Fixed
- La comparaison d'une cellule vide avec une valeur logique traite la cellule vide comme FALSE dans les deux moteurs, XLS comme XLSX, comme le fait Excel : avec A1 vide,
=A1=FALSEet=A1<TRUErenvoient désormais TRUE et=A1=TRUErenvoie FALSE. Auparavant, la cellule vide était comparée comme 0, ce qui la classe sous toute valeur logique
Version 2.384.52
Fixed
- COUNTIF, COUNTIFS, SUMIF, SUMIFS, AVERAGEIF, AVERAGEIFS et les fonctions de base de données appliquent aux critères textuels les règles de caractères génériques d'Excel dans les deux moteurs, XLS comme XLSX :
~*et~?correspondent à un astérisque ou un point d'interrogation littéral, les crochets sont des caractères ordinaires, et un critère sans*ni?est une simple comparaison insensible à la casse. Auparavant, un critère comme"[x]"était lu comme un ensemble de caractères,"~*"ne correspondait pas à un astérisque, et un motif mal formé ne correspondait à rien, en silence - Les critères
"<>text"comptent nombres, valeurs logiques et cellules vides comme différents, et un simple"<>"compte chaque cellule non vide, comme dans Excel ; la comparaison de texte sous<>est désormais insensible à la casse - La correspondance par caractères génériques de MATCH et XLOOKUP traite
~comme un échappement pour le caractère qui le suit et ignore un~final, comme le fait Excel
Version 2.384.51
Changed
- Les snapshots de cellules en lecture seule conservent les noms de feuilles dans un stockage UnicodeString partagé ; SheetName est désormais une propriété WideString lisible et écrivable avec la même syntaxe ordinaire de lecture et d'affectation qu'avant, mais son adresse de champ brute et le précédent agencement d'enregistrements ne sont plus pris en charge ; les appelants doivent recompiler contre cette version
- La sortie de rapport vers un flux de destination vide saute l'inutile snapshot de sauvegarde tout en préservant le rollback du contenu et de la position de la destination si la sortie échoue
- Les audits de formules profonds traitent les caches numériques plus efficacement tout en préservant les valeurs Variant en cache, les résultats d'évaluation et les constats signalés
Fixed
- Le collage depuis le presse-papiers en XLS et XLSX capture les données BIFF8 et le texte de repli ensemble sous un seul verrou de presse-papiers, si bien que les deux formats proviennent du même état du presse-papiers ; le BIFF8 lisible reste utilisable quand son compagnon texte est irrécupérable, un texte seul indisponible n'insère aucune cellule, et la politique existante de relance d'ouverture du presse-papiers ne change pas
- Une publication au presse-papiers de texte requis ou de BIFF8 qui échoue préserve le code d'erreur Win32 d'origine à travers le nettoyage, afin que les appelants puissent récupérer le diagnostic d'échec immédiatement après l'appel
- Le lecteur de texte du presse-papiers à tentative unique préserve les échecs natifs de récupération de données à travers le nettoyage du presse-papiers sans changer son comportement de relance
Version 2.384.50
Changed
- Les audits de symboles de formule s'exécutent plus vite sur les classeurs XLS épars, tout en préservant les constats signalés et leur ordre
Version 2.384.49
Fixed
- Les exemples WorkbookAudit (Delphi et C++Builder) :
AuditReport.jsonest désormais écrit sans marque d'ordre d'octet UTF-8 pour que les parseurs JSON stricts l'acceptent ; les feuilles XLS signalent leur plage AutoFilter ; les noms définis XLSX qui pointent vers un autre classeur affichent le fichier lié au lieu de son index ; les exécutions en ligne de commande n'écrasent plus les réglages enregistrés ; une case de dossier vide retombe sur le dossier du programme au lieu de la racine du lecteur ; un enregistrement d'exemple qui échoue est consigné dans le journal au lieu d'être annoncé comme créé - Les exemples ApiTour : si la reconstruction du classeur de démonstration échoue, l'ancien est conservé, donc les boutons d'export ne plantent plus ; les classeurs sont libérés quand la construction lève une exception ; l'export HTML consigne ses erreurs dans le journal ; et le journal liste les cinq mises en forme conditionnelles réellement créées
- Les exemples ExcelGraphics : un type d'image non pris en charge est signalé au lieu d'enregistrer une feuille vide, et la boîte de dialogue d'ouverture ne liste plus que les formats pris en charge
- Les exemples OdsExport comparent la taille de police dans la vérification d'aller-retour et renvoient un code de sortie non nul quand la vérification ou l'enregistrement échoue ; l'exemple OdsImport C++Builder vérifie le résultat de l'enregistrement et ne crée plus de cellules vides pendant la génération de son rapport
- Les exemples DataExport / ExportWithColoring ne resserrrent que la première colonne comme leurs commentaires l'annoncent, et les exemples d'export C++Builder ouvrent la boîte de dialogue d'enregistrement dans le dossier du programme
- Les fichiers readme des exemples listent les API et les fichiers de sortie que les exemples utilisent réellement
Version 2.384.48
Fixed
- Les heures de création et de dernier enregistrement des documents sont désormais écrites en UTC comme l'exigent les formats de fichier, et relues en heure locale :
Created/ModifiedXLSX et propriétés de date personnalisées, ainsi queCreatedDate/LastSavedDateXLS. Auparavant, l'heure locale était stockée comme si c'était de l'UTC, si bien qu'Excel et l'Explorateur Windows affichaient les horodatages décalés du fuseau horaire ; les valeurs écrites et lues par HotXLS lui-même ne changent pas
Version 2.384.47
Fixed
- Les fichiers XLS à obfuscation XOR (la protection par mot de passe des classeurs Excel 5.0/95,
EncryptionType = xletXor) : la position de clé utilisée pour chaque enregistrement suit désormais la spécification du format de fichier, de la même façon que les autres applications tableeurs la lisent et l'écrivent. Auparavant, HotXLS ne savait lire que ses propres fichiers XOR, et tout enregistrement dont la longueur n'était pas un multiple de 16 se décodait en charabia ailleurs
Version 2.384.46
Fixed
- L'AutoFit XLSX (
FitXlsxSheet,FitXlsxSheetColumns,FitXlsxSheetRows,MarkSheet) mesure chaque cellule avec sa propre police, sa taille, son gras et son italique au lieu de toujours partir sur Arial 10, si bien que le texte en Calibri 11, les en-têtes en gras et les grands titres ne se retrouvent plus dans des colonnes trop étroites - L'AutoFit XLSX mesure le texte tel qu'affiché à travers le format de nombre (dates, monnaies, pourcentages) plutôt que la valeur brute stockée
- L'AutoFit XLSX maintient les largeurs de colonnes calculées dans la limite de
MaxWidth; la marge de cellule était auparavant ajoutée après application de la limite - L'AutoFit XLSX dimensionne les lignes des cellules renvoyées à la ligne dans des colonnes sans largeur explicite par rapport à la largeur par défaut de la feuille ; auparavant, ces cellules étaient mesurées comme une seule ligne et la ligne ressortait trop courte
Version 2.384.45
Fixed
- Classeurs XLS : les critères d'
ApplyAutoFiltertels que'>=100'ou'=2.5'sont désormais enregistrés comme conditions numériques ; ils l'étaient en texte, qu'Excel compare comme du texte, si bien que le filtre masquait toutes les lignes numériques. Une valeur sans opérateur de comparaison (comme'North'ou'100') reste enregistrée en texte, à la manière dont Excel stocke un élément choisi dans une liste Criteria1.DataTyperépond 4 (nombre) pour ces critères au lieu de 6 (texte) ;Criteria1.Valuese relit toujours comme 100
Version 2.384.44
Fixed
INDIRECTavec un texte de référence A1 lisait la cellule une ligne plus bas et une colonne à droite (INDIRECT("D1")renvoyait E2), dans les classeurs XLS comme XLSX ; le texte R1C1 était déjà correct. Une référence au-delà de la dernière ligne ou colonne renvoie désormais#REF!
Version 2.384.43
Fixed
- Classeurs XLSX : les formules peuvent désormais référencer toute la feuille de 1048576 × 16384 cellules. Les références au-delà de la colonne IV ou de la ligne 65536 (
=XFD1,=A100000,=SUM(XFC1:XFD1),Data!C1048576) étaient rejetées comme noms inconnus à la saisie ou évaluées en erreur ; elles s'analysent, se calculent, se décalent avec les lignes et colonnes insérées, et s'enregistrent telles qu'écrites - Classeurs XLSX : les références de colonnes et de lignes entières (
A:A,1:1) couvrent toute la feuille, doncROWS(A:A)renvoie 1048576 etSUM(A:A)inclut les valeurs sous la ligne 65536 ;ADDRESSrenvoie des colonnes à trois lettres comme$XFD$1 - Classeurs XLS : les références à la dernière ligne et à la dernière colonne de la feuille de 65536 × 256 (
=A65536,=IV1) sont acceptées ; elles étaient rejetées comme noms inconnus
Version 2.384.42
Fixed
- Les unités héritées
lxRows/lxCols(conservées pour la compatibilité source ; les classes de classeur ne les utilisent pas) : un index de ligne au-delà de 1048575 lèveERangeErrorau lieu de reboucler sur la ligne 1, l'enregistrement ROW ne marque plus chaque changement de niveau de plan comme regroupé, et l'écriture de COLINFO pour une colonne sans ses propres réglages utilise les valeurs par défaut au lieu de planter
Version 2.384.41
Fixed
- Builds Lazarus / Free Pascal compilés en mode chaînes ANSI : les fichiers temporaires dont le chemin contient des caractères hors de la page de code système sont désormais supprimés au nettoyage ; auparavant, leurs noms étaient stockés avec pertes et les fichiers restaient sur place dans le dossier temp
Version 2.384.40
Fixed
TlxCellMMU(le stockage de cellules compacté) lèveEInvalidOperationquand une cellule est écrite hors ordre des lignes dans un bloc de 256 lignes ou par-dessus une cellule existante, etERangeErrorpour une position négative ou une colonne au-delà de 65534 ; auparavant, une telle écriture corrompait silencieusement la ligne voisine. Les écritures en masse de la bibliothèque respectent déjà l'ordre des lignes et ne sont pas concernées
Version 2.384.39
Changed
- Classeurs XLSX : l'affectation de
TXLSXWorksheet.TabColormet désormais aussiTabColorIsAutoà False, si bien que la couleur d'onglet s'affiche sans seconde affectation, à l'image des propriétés de couleur de police, de remplissage et de bordure. MettreTabColorIsAutoà True ensuite retire toujours la couleur d'onglet
Version 2.384.38
Changed
- Classeurs XLS :
TXLSWorksheet.AddPivotTabletraite désormaisDestRowetDestColcomme basés à 1, commeCells[Row, Col], la documentation et le moteur XLSX ;AddPivotTable('Data!A1:C9', 3, 1, ...)ancre le tableau croisé dynamique en A3. Le code qui passait des positions basées à 0 doit ajouter 1, et une ancre de 0 ou hors de la feuille renvoie désormaisnil - Classeurs XLS : les positions sur
TXLSPivotTable(deFirstRowàFirstDataCol) et la plage source surTXLSPivotCache(deSourceFirstRowàSourceLastCol) sont désormais basées à 1 pour les tableaux croisés dynamiques créés comme ouverts, si bien que le même code lit les mêmes cellules dans les deux moteurs et qu'un tableau croisé dynamique copié entre eux garde sa place
Version 2.384.37
Fixed
- Classeurs XLSX : un tableau croisé dynamique placé sous la ligne 65535, ou repoussé là par l'insertion de lignes, conserve sa véritable position ; auparavant, l'ancre était tronquée à 16 bits et le tableau croisé dynamique enregistré atterrissait sur les mauvaises lignes
- Les propriétés de position des tableaux croisés dynamiques (
FirstRow,FirstCol,LastRow,LastCol,FirstHeaderRow,FirstDataRow,FirstDataCol) sont désormais desIntegerau lieu deWord - Classeurs XLSX :
AddPivotTableetAddPivotTableCopyrenvoientnilquand l'ancre se situe hors de la feuille ou que le bloc copié dépasserait la dernière ligne ou colonne, au lieu d'écrire un tableau croisé dynamique qu'Excel rejette
Version 2.384.36
Fixed
- Les exemples C++Builder XlsTables, XlsCondFormat12, XlsCreateChart et InteractiveFeatures écrivent leurs colonnes de texte en texte ; passer un
const wchar_t*à unOleVariantchoisissait le constructeurboolet chaque en-tête et libellé ressortait en TRUE - L'exemple DefinedNames liste les noms XLS à partir de l'index 1 au lieu de planter sur l'index 0, WorkbookAudit compte les références externes dans les noms de classeurs XLS, et FileMonitor écrit
Monitored.xlsxau lieu du.xlsxxmal orthographié qui faisait échouer chaque lecture de nom de feuille - Les exemples Pictures et OdsExport incorporent un PNG valide ; le littéral d'octets était corrompu par la conversion en chaîne et les longueurs de chunks de Pictures étaient fausses
- ApiTour évalue son étape
DEMOADDsur la feuille API Tour au lieu de la feuille Dashboard active, où un argument texte pouvait interrompre le démarrage ; la visite classique C++Builder affiche désormais le résultat de l'étape - FreezePanes, QuickStart et ApiTour figent exactement leurs lignes et colonnes d'en-tête ;
FreezePanesprend des nombres, pas la première cellule défilable - Les couleurs de mise en forme conditionnelle dans ApiTour, CondFormatGallery, OdsExport et WorkbookAudit sont données en BGR comme l'API l'attend, si bien que les barres de données et les échelles de couleurs affichent leurs couleurs voulues ; CondFormatGallery donne à ses règles top-N, doublons et au-dessus de la moyenne une surbrillance visible
- MemoryDataExport et HtmlExport ne signalent plus les exports CSV, HTML et RTF réussis comme des échecs (ces writers renvoient 0 en cas de succès), et MemoryDataExport écrit les trois fichiers même si l'un échoue
- Les exemples qui enregistrent puis annoncent ou ouvrent le fichier (QuickStart, ExcelGraphics, HotXLSInMemory, OrderCalc, PurchaseOrder et plusieurs exemples console) vérifient le résultat de l'enregistrement au lieu d'annoncer un succès quand le fichier est verrouillé
- ConversionWorkbench traite tout résultat de writer négatif comme un échec et supprime d'abord l'ancienne sortie, si bien qu'un fichier périmé ne masque plus une conversion ratée ; la version C++Builder exporte chaque feuille en HTML
- InvoiceTemplate, OrderCalc et DataExport ne dépendent plus du format de nombres et de dates de Windows : les formules de TVA, les prix et les seuils de dates fonctionnent sur les systèmes qui utilisent la virgule décimale ou une date avec l'année en premier
- Corrections mineures : les totaux de QuickStart utilisent un texte foncé sur leur remplissage clair, DateSystems affiche les numéros de série bruts et une date d'époque 1904 valide, CrossWorkbookCopy garde ses cellules fusionnées hors du tableau, CrossWorkbookCopyXls utilise une liste séparée par des virgules et un vrai bleu clair, Hyperlinks affiche le texte de lien voulu, SheetProtection décrit et règle correctement les actions autorisées, OdsImport ne crée plus de cellules vides pendant le scan, InteractiveFeatures enregistre un classeur sans charge utile VBA en .xlsx, WorkbookAudit signale les fichiers XLS chiffrés et leurs projets VBA, ChartTypes garde ses graphiques à l'écart des données, les exemples d'export de données C++Builder trouvent Demos.mdb depuis le dossier de sortie de l'IDE, et FormulaFunctions vérifie la cellule rouverte et compte les échecs de réouverture
Version 2.384.35
Fixed
- Affecter une couleur à une police XLSX, un remplissage, un côté de bordure ou un run de texte enrichi prend désormais effet à elle seule. Ces objets démarrent avec la couleur automatique, et un
Color,ForegroundColorouBackgroundColorexplicite était silencieusement abandonné tant que l'indicateurColorIsAuto/ForegroundIsAuto/BackgroundIsAutocorrespondant n'était pas aussi remis à zéro - Affecter une couleur RGB efface aussi une source de couleur de thème ou indexée antérieure, qui l'emporterait sinon sur elle ; affecter une couleur de thème ou un emplacement indexé de 0 ou plus remet à zéro l'indicateur automatique
- Les couleurs de bordure collées depuis le presse-papiers dans un classeur XLSX, les couleurs de bordure des classeurs classiques exportés vers XLSX et la couleur de police passée à
TXLSXComment.SetFontsont désormais écrites au lieu d'être perdues au profit de la couleur automatique
Version 2.384.34
Fixed
- Les éléments de sous-total, de total général et vides de la liste d'éléments d'un champ de tableau croisé dynamique ne sont plus lus comme des éléments de données ; copier un tel tableau croisé dynamique écrivait un élément pointant sur l'index de cache -1
- Les champs de tableau croisé dynamique issus de fichiers Excel conservent leur sous-total par défaut : Excel omet
defaultSubtotalquand il est actif, et HotXLS interprétait l'attribut manquant comme désactivé - Les champs de cache de tableau croisé dynamique dont les éléments partagés omettent
containsStringsont lus comme des champs texte, selon la valeur par défaut du schéma, au lieu de champs mixtes
Version 2.384.33
Fixed
- Les tableaux croisés dynamiques écrits par le moteur XLSX utilisent les valeurs d'axe du schéma (
axisRow,axisCol,axisPage) ; les versions antérieures écrivaientrowAxis/colAxis/pageAxis, qui ne sont pas du OOXML valide. HotXLS lit toujours les fichiers contenant les anciennes valeurs - Les champs de tableau croisé dynamique utilisés dans la zone de valeurs sont marqués avec
dataField="1", et les champs sans éléments ne reçoivent plus une liste<items>vide que le schéma n'autorise pas - Les éléments masqués et regroupés d'un tableau croisé dynamique conservent leur état quand le tableau est copié ou reconstruit, et la liste d'éléments de chaque champ se termine par les éléments de sous-total qu'Excel attend pour ses fonctions de sous-total
- Les champs de cache de tableau croisé dynamique portent un
numFmtIdnumérique au lieu du texteGeneral
Version 2.384.32
Fixed
- L'import ODS convertit correctement les lignes de tableaux en ligne :
{1;2|3;4}devient{1,2;3,4}au lieu d'une formule qu'Excel ne sait pas analyser - L'import ODS convertit l'opérateur d'union de références :
SUM([.A1:.B2]~[.C3])devientSUM((A1:B2,C3))
Version 2.384.31
Fixed
- L'import ODS lit les cellules horaires dont la durée porte une partie date, comme
P0Y0M0DT12H30M15S, et les durées en semaines commeP1W, au lieu de retomber sur le texte affiché - Un
Mavant le séparateurTd'une durée ODS est un mois, pas une minute ; les années et mois non nuls, qui n'ont pas de longueur fixe, retombent désormais sur le texte affiché au lieu de transformerP1Men une minute
Version 2.384.30
Fixed
TGWmfEmfReadferme le métafichier quand le fichier est trop court ou endommagé, au lieu de le garder verrouillé jusqu'à la fin du processusTGWmfEmfReadtraite un WMF placeable dont l'en-tête annonce zéro unité par pouce comme sans dimension au lieu de diviser par zéroTGWmfEmfReadconserve des tailles et bornes 32 bits dansBSEWMF, en cohérence avec l'en-tête d'image qu'il décrit
Version 2.384.29
Fixed
- Les images WMF et EMF de 64 Ko ou plus dans les classeurs XLS classiques survivent à l'ouverture et à l'enregistrement ; leurs tailles stockée et décompressée étaient tronquées à 16 bits, si bien qu'Excel ne pouvait pas décoder l'image dans le fichier enregistré
- Les bornes d'images métafichiers hors de la plage -32768..32767 sont conservées au lieu de reboucler
Version 2.384.28
Fixed
TXMLWriterne produit plus de XML malformé quand les textes ou valeurs d'attributs contiennent des caractères de contrôle, des surrogates non appariés ou U+FFFE / U+FFFF ; les caractères que XML 1.0 ne peut pas représenter sont omisTXMLWriterécrit un retour chariot dans le texte d'un élément comme référence de caractère, si bien que le texte se relit inchangé au lieu de voir son CR transformé en LFTXMLWriterlève une erreur quand le flux cible accepte moins d'octets qu'il n'en a écrit, par exemple sur un disque plein, au lieu de laisser un fichier tronqué en silence
Version 2.384.27
Fixed
- Copier une plage dont les formules pointent au-dessus ou à gauche du bloc copié, comme
=B4+1copié depuis B5, se colle désormais avec la référence toujours une ligne plus haut ; auparavant, elle restait épinglée à la cellule d'origine, et une formule pouvait finir par se référencer elle-même - Les données Excel du presse-papiers que HotXLS publie conservent les cellules copiées à leur position de feuille, si bien que les applications qui les lisent voient les adresses d'origine
Version 2.384.26
Fixed
- Les aides chaînes zlib (
ZCompressStr,ZDecompressStret leurs variantes en place) traitent désormais la chaîne entière ; avec des chaînes Unicode, seule la première moitié du texte était compressée, si bien qu'un aller-retour perdait des données
Version 2.384.25
Fixed
- Les liens hypertexte des classeurs classiques dont le texte affiché est marqué sans l'indicateur de site sont lus correctement, et les liens hypertexte à un type de cible inhabituel ne font plus échouer toute l'ouverture ni ne renvoient une sous-adresse en charabia
Version 2.384.24
Fixed
- Une exception levée par le gestionnaire de changements du moniteur de fichiers n'arrête plus le moniteur en silence ; il continue de surveiller et signale les changements ultérieurs
Version 2.384.23
Fixed
- Les couleurs de thème avec une teinte inférieure à -1 dans un fichier malformé sont bornées au noir au lieu de produire des couleurs aléatoires à l'export ou à l'impression
Version 2.384.22
Fixed
- Les connexions de données créées via l'API sont enregistrées avec l'attribut de version de rafraîchissement qu'exige le format de fichier
- Une connexion dont le nom ou l'id manque ou figure en doublon ne fait plus échouer l'ouverture de tout le classeur ; l'entrée est conservée telle quelle et réenregistrée inchangée
Version 2.384.21
Fixed
- Modifier le code source d'un module VBA prend désormais effet dans Excel : le projet est enregistré pour qu'Office compile le nouveau source au lieu d'exécuter le code compilé en cache de l'ancien
- Le source des modules VBA est désormais enregistré sous la forme compressée définie par le format ; le dernier bloc de chaque module était stocké d'une manière qu'Office considère comme endommagée
- Un flux directory VBA malformé ne bloque plus l'ouverture du classeur, et une entrée de module dépourvue de ses informations de flux ne laisse plus un module vide dans le projet
Version 2.384.20
Fixed
- Les noms définis chargés depuis un classeur classique conservent leurs références décalées après insertion ou suppression de lignes ou de colonnes et enregistrement du classeur ; le fichier contenait auparavant encore la référence d'origine
Version 2.384.19
Fixed
- L'ajustement des seules lignes ou des seules colonnes d'une feuille XLSX ne met plus la largeur de chaque colonne mesurée, ou la hauteur de chaque ligne mesurée, à zéro quand elle n'avait pas de taille explicite
Version 2.384.18
Fixed
- Les critères de filtre automatique des classeurs classiques sont combinés comme ils ont été définis : les conditions AND étaient enregistrées en OR et inversement, si bien qu'Excel affichait les mauvaises lignes
- Les critères booléens de filtre automatique sont enregistrés en TRUE ou FALSE ; ils étaient stockés sous une forme qu'Excel lit comme une valeur d'erreur
Version 2.384.17
Fixed
- Les dates de création et de dernier enregistrement des classeurs classiques correspondent désormais à Excel ; elles étaient écrites un jour trop tard et lues un jour trop tôt
- La date de dernier enregistrement est stockée sous sa propriété de document attitrée ; elle était enregistrée dans l'emplacement du nombre de pages, où Excel et Windows ne l'affichaient pas comme une date
- Le temps d'édition total est stocké comme une durée, si bien qu'Excel et Windows affichent le vrai nombre de minutes au lieu d'environ 299 ans ; les heures écrites par les versions antérieures se lisent toujours correctement
Version 2.384.16
Fixed
- La règle d'unicité de la vérification d'import compare désormais les valeurs des cellules ; chaque valeur suivant la première dans une colonne était auparavant signalée comme doublon
- Ajouter une seconde règle pour la même colonne remplace proprement la première ; l'ancienne règle était libérée mais toujours évaluée, et libérer le vérificateur levait une erreur de pointeur invalide
- Vérifier une feuille ne crée plus de cellules vides pour les blancs qu'elle lit
- Ne conserver que les lignes en violation n'écrit plus au-delà de sa table de lignes quand une violation se situe sous la plage utilisée, et la ligne de légende est insérée au-dessus des données au lieu d'écraser la première violation
Version 2.384.15
Fixed
- Lire une entrée ZIP par petits morceaux ne perd plus les derniers octets de l'entrée quand les données compressées se terminent au milieu d'une séquence répétée, ce qui pouvait faire échouer un XLSX valide avec une erreur de taille d'entrée
- Décompresser des données qui s'étendent au-delà de 2 Go lève désormais une erreur au lieu de faire planter le processus 64 bits
- Le flux de décompression renvoie toutes les données restantes après épuisement de son entrée au lieu de s'arrêter en chemin
Version 2.384.14
Fixed
- Les images PNG entrelacées de 1, 2 ou 4 bits par pixel n'écrivent plus au-delà du tampon d'image, ce qui pouvait planter ou corrompre les pixels voisins à l'export ou à l'impression d'un classeur qui en contient
- Les images PNG entrelacées se décodent correctement quand une passe démarre avec le filtre Average ou Paeth
- Les images PNG en niveaux de gris 2 bits affichent désormais leurs vrais niveaux de gris, et la lecture de pixels isolés d'images en niveaux de gris et à palette 2 bits renvoie les bonnes couleurs
- Les images PNG dont les données compressées traînent des octets en trop ne bloquent plus le décodeur, et les images valides avec un gros chunk de données d'image ne sont plus rejetées avec une erreur de CRC
- Les images à profondeur de bits invalide ou à longueur de chunk au-delà de la fin du fichier sont rejetées proprement au lieu de planter ou d'allouer des gigaoctets de mémoire
- Les chunks de texte enregistrés dans les images PNG ne sont plus tronqués ni corrompus
Version 2.384.13
Fixed
- Les classeurs classiques chiffrés en RC4 utilisent désormais le hachage de mot de passe correct pour les mots de passe de 28 caractères ou plus, si bien qu'ils s'ouvrent dans Excel ; les mots de passe de 32 caractères ou plus produisaient auparavant des fichiers qu'HotXLS lui-même ne pouvait pas ouvrir
- Les mots de passe RC4 allant jusqu'à 255 caractères sont acceptés à l'ouverture, et les fichiers à mots de passe de 28 à 31 caractères enregistrés par les versions antérieures s'ouvrent toujours
- Un en-tête RC4 CryptoAPI malformé avec une longueur surdimensionnée est signalé comme fichier corrompu au lieu de lever une erreur générique
Version 2.384.12
Fixed
- Les classeurs chiffrés en mode Agile déclarant du SHA-256 se déchiffrent désormais correctement ; les segments de données étaient toujours déchiffrés avec des vecteurs d'initialisation SHA-512, si bien que le classeur ne s'ouvrait pas même avec le bon mot de passe
- Les fichiers Agile dont les données de clé et le chiffreur de clé par mot de passe utilisent des algorithmes de hachage différents ne sont plus signalés comme à mot de passe erroné
- Un spin count au-delà de la limite de 10000000 du format est rejeté immédiatement au lieu de mobiliser le CPU pendant des heures
- Un vérificateur de mot de passe tronqué ne lit plus au-delà de son tampon, et la clé d'intégrité écrite par
SaveAsEncryptedAgilea désormais la longueur qu'exige le format
Version 2.384.11
Fixed
- Les classeurs enregistrés avec
SaveAsEncrypteds'ouvrent désormais dans Excel. La clé de Standard Encryption ECMA-376 était dérivée sans sa dernière étape et la taille du paquet était chiffrée avec les données, si bien qu'Excel rejetait le mot de passe ; les classeurs ainsi chiffrés par Excel 2007 peuvent maintenant être ouverts eux aussi - Les classeurs chiffrés enregistrés par les versions antérieures d'HotXLS s'ouvrent toujours avec le bon mot de passe
- Un en-tête de chiffrement malformé avec une longueur surdimensionnée ne provoque plus de violation d'accès pendant l'ouverture
Version 2.384.10
Fixed
- Copier-coller des formules entre cellules, et trier avec copie des formules, ne déplacent plus les références absolues :
$A$1reste en place,A$1ne bouge que sa colonne et$A1que sa ligne, comme Excel - Les noms de fonctions qui ressemblent à des adresses de cellules, comme
LOG10(, ne sont plus décalés comme des références au collage d'une formule, si bien que la formule collée ne se transforme plus enLOG11(et#NAME? - Les références qualifiées par un nom de feuille, comme
Sheet2!A1ou'My Sheet'!B3, se décalent désormais au collage comme les références non qualifiées - Coller du texte commençant par
=ou une apostrophe dans un classeur classique le garde en texte ; il était auparavant transformé en formule ou perdait son premier caractère
Version 2.384.9
Fixed
- Les formats de nombre de durée écoulée comme
[h],[mm]et[ss].00sont désormais reconnus comme des formats horaires au lieu d'être pris pour des noms de couleurs ; avec la précision telle qu'affichée désactivée (FullPrecisionàFalse), une durée formatée en[ss].00n'est plus arrondie comme un simple nombre à deux décimales, ce qui faisait tomber à zéro les valeurs de quelques secondes - Les jetons de minutes séparés de l'heure ou de la seconde par un littéral, comme dans
h:mmetmm:ss, sont désormais lus comme des minutes plutôt que des mois lors de l'analyse d'un format de nombre
Version 2.384.8
Fixed
- Copier du texte, du HTML ou des données de tableur vers le presse-papiers Windows utilise désormais un propriétaire temporaire valide, y compris dans les programmes console et les threads de travail sans fenêtre d'application ; les données copiées restent disponibles après la destruction de ce propriétaire
- Une publication au presse-papiers qui échoue libère désormais chaque bloc de données alloué que Windows n'a pas accepté, y compris les blocs texte et HTML accompagnateurs quand la publication de tableur échoue
Version 2.384.7
Fixed
- Compiler la bibliothèque depuis les sources avec RAD Studio XE5 à RAD Studio 12 Athens échouait après l'arrivée du support Free Pascal et du correctif de journée bissextile du
DATE: ces compilateurs analysent quand même la vérification de version Free Pascal tout en la sautant, et rejettent le cast numérique derrière le cas spécialDATE(1900,2,29). Les deux endroits utilisent désormais des formes que tout compilateur pris en charge accepte, si bien que toute la gamme RAD Studio compile à nouveau
Version 2.384.6
Fixed
- Copier des cellules portant un commentaire dans un classeur .xls classique, que ce soit au sein d'un classeur, vers un autre classeur ou en décalant des lignes et des colonnes, conservait le texte du commentaire mais perdait ses runs mis en forme, si bien que chaque copie affichait toute la note dans une seule police ; les runs voyagent désormais avec le texte, et d'un classeur à l'autre leurs polices sont ajoutées au classeur de destination
- Copier une feuille entière avec
Sheets.AddCopydans un classeur .xls classique perdait les commentaires des cellules sans valeur ni mise en forme ; ces commentaires sont maintenant copiés aussi - Les commentaires des classeurs .xlsx se rouvraient sans le nom de police, le barré et la couleur de leurs runs mis en forme, et les runs enregistrés ne portaient jamais de soulignement ni d'exposant/indice ; tout cela survit désormais à un enregistrement et à une réouverture, y compris les runs copiés depuis un autre classeur avec
CloneRangeTo
Version 2.384.5
Fixed
- Les runs mis en forme des commentaires et zones de texte des classeurs .xls classiques ne perdent plus leurs polices à l'enregistrement. Une police utilisée uniquement par un tel run pouvait disparaître de la liste de polices enregistrée, le plus souvent quand HotXLS réenregistrait un classeur qu'il avait déjà enregistré une fois, et le run affichait alors la police par défaut dans Excel ou héritait d'une police ajoutée entre-temps ; ces polices sont désormais conservées, et les runs sont renumérotés avec le reste de la liste de polices
TextRuns.FontIndexsur les commentaires et zones de texte suit la numérotation des polices du fichier, où l'index 4 n'est jamais utilisé et la cinquième police a l'index 5 ; la réservation de palette pour les couleurs de police indexées lit désormais ces index de la même façon
Version 2.384.4
Fixed
- La modification de la numérotation des polices en 2.384.1 était elle-même le bug : les fichiers .xls classiques numérotent les polices comme Excel le fait ([MS-XLS] §2.5.129), où l'index 4 n'est jamais utilisé et la cinquième police a l'index 5, mais 2.384.1 était passé à un simple comptage à base zéro ; les classeurs enregistrés affichaient alors dans Excel chaque police personnalisée un cran trop tôt (la première retombait sur la police par défaut), et les classeurs créés dans Excel s'ouvraient avec chaque police personnalisée décalée d'un cran trop tard. L'enregistrement et l'ouverture suivent à nouveau la numérotation d'Excel, vérifiée face à des classeurs écrits et lus par Excel lui-même
- Les cellules en texte enrichi conservent la police de chaque run mis en forme à travers ouverture, enregistrement et copies de feuille entre classeurs, y compris les runs dont aucune cellule n'utilise directement la police
- Les classeurs enregistrés par 2.384.1 à 2.384.3 avec cinq polices ou plus portent déjà la numérotation décalée, qu'Excel comme HotXLS ne peuvent distinguer de données valides ; régénérez-les depuis leur source, ou réappliquez les polices concernées et enregistrez à nouveau
Version 2.384.3
Fixed
- Les dates du 1900-01-01 au 1900-02-28 étaient décalées d'un jour par rapport à Excel dans les deux moteurs de classeur, car le calendrier 1900 d'Excel compte un 1900-02-29 fantôme ; la lecture et l'écriture appliquent désormais la correction documentée,
DATE(1900,2,29)répond 1900-02-28 au lieu de#VALUE!, et la table de chaînes partagées survit aux caractères NUL incorporés et aux pages de code double octet à travers les frontières d'enregistrements sans se désynchroniser - Les comparaisons se chaînent de gauche à droite comme Excel les évalue, donc
=1<2<3se lit désormais(1<2)<3et renvoie FALSE comme Excel (TRUE l'emporte sur tout nombre dans une comparaison), là où l'expression se regroupait auparavant en1<(2<3)et renvoyait TRUE ; un opérande vide égale à la fois 0 et une chaîne vide dans les comparaisons ; les critères à caractères génériques s'appliquent au « différent de » dansCOUNTIFetSUMIFexactement comme ils le faisaient déjà pour le « égal » ; la plage de somme deSUMIFet de ses frères se redimensionne depuis sa cellule en haut à gauche vers la forme de la plage de critères au lieu d'être bornée ; etINDIRECThonore son second argument (texte R1C1 absolu) et rejette les déchets qui traînent après la référence YEARFRACavec base 0 applique les ajustements de fin février NASD queDAYS360implémente déjà, si bien que les périodes touchant la fin février se comptent correctement- Un texte lisant « endstream » à l'intérieur d'une cellule ne peut plus tronquer une page PDF pendant la compression de flux, le correctif de jeton du nombre total de pages garde la longueur du flux cohérente quand la compression est ignorée, les décalages d'objets au-delà de 32 bits échouent bruyamment au lieu de corrompre la table de références croisées, et les JPEG en niveaux de gris ou CMYK sont étiquetés avec leur véritable espace colorimétrique au lieu de
/DeviceRGB - Un classeur dont le stockage des caches de tableau croisé dynamique a été amputé ou tronqué s'ouvre avec les caches concernés marqués incomplets au lieu de faire échouer tout le chargement, et réenregistre ces caches via la disposition en ligne héritée plutôt que de lever une erreur
- Une table de chaînes partagées dont le nombre de chaînes déclaré dépasse ce que la chaîne d'enregistrements délivre fait désormais échouer l'ouverture au lieu de résoudre silencieusement les cellules restantes en chaînes vides
Version 2.384.2
Fixed
- La conversion d'un classeur .xls classique vers .xlsx abandonnait silencieusement les cellules fusionnées situées à gauche d'une fusion antérieure dans une rangée inférieure ; le scan ne réutilise plus sa variable de plage utilisée pour la zone de fusion
- Un commentaire XML dans une liste d'extensions de classeur était réémis avec des marqueurs
<!--dédoublés à chaque enregistrement, produisant un fichier qu'Excel doit réparer ; les nœuds de commentaire font désormais un aller-retour à l'octet près - Les enregistrements de feuille non reconnus capturés lors de l'ouverture d'un .xls disparaissaient de chaque enregistrement ultérieur bien qu'ils soient conservés pour rejeu, et fuyaient de la mémoire à chaque ouverture ; ils persistent désormais et se rejouent tels quels via l'enregistreur d'enregistrements standard
- Les noms définis de plus de 255 caractères et les commentaires de nom de plus de 65535 caractères corrompaient l'encadrement de l'enregistrement NAME à l'enregistrement ; les deux sont désormais rejetés d'emblée
- Un enregistrement avorté fuyait les tampons d'enregistrements du classeur et de la feuille lorsqu'une divergence de chiffrement survenait en cours d'écriture ; l'enregistrement libère désormais ses tampons sur chaque chemin de sortie
- L'enregistreur de correctifs en place supprimait le fichier original avant de renommer le remplacement à sa place, si bien qu'un renommage raté détruisait le classeur ; l'échange est désormais un remplacement atomique unique qui conserve les deux fichiers en cas d'échec
- Les références de cellules du lecteur direct appliquent les bornes de 16384 colonnes et 1048576 lignes au lieu d'accepter des coordonnées en débordement, les attributs entiers malformés retombent sur des valeurs par défaut au lieu d'abandonner toute la lecture, et les dates entre le 1900-01-01 et le 1900-02-28 se convertissent dans les deux sens en tenant compte du 29 février fantôme d'Excel
- Les valeurs d'attributs contenant tabulation, saut de ligne ou retour chariot font un aller-retour inchangées au lieu de se réduire en espaces, et une entité non terminée dans le texte d'un élément est désormais rejetée comme dans la branche des attributs
- Les copies verbatim d'entrées ZIP de 4 Gio ou plus, que le chemin de copie ne peut pas encadrer correctement, sont désormais refusées comme le fait l'enregistreur en flux au lieu de produire une archive corrompue
- Le lanceur de corpus écrit ses résultats de manière atomique afin qu'une exécution interrompue ne puisse détruire les preuves conservées, consigne les délais d'attente de build au lieu de planter, et tolère les lignes de trace d'étape malformées ; le vérificateur LibreOffice écrit ses preuves de manière atomique et la sonde de remplacement de fichiers collecte à nouveau réellement la liste des produits antivirus
Version 2.384.1
Fixed
- Chaque police à partir de la cinquième était écrite avec un index d'enregistrement situé un cran après la fin de la liste des polices, si bien qu'Excel réparait le classeur et que les polices personnalisées revenaient en police par défaut ; l'enregistrement comme l'ouverture utilisent désormais l'index zéro-basé documenté, si bien que les polices personnalisées survivent à un aller-retour et que les fichiers créés par Excel conservent leurs polices à l'ouverture dans HotXLS
- Évaluer
=0^-1ou une base négative avec un exposant fractionnaire faisait planter le recalcul avec une exception en virgule flottante au lieu de renvoyer#DIV/0!ou#NUM! - Les règles d'expression de mise en forme conditionnelle lues depuis un .xls existant étaient réenregistrées sous forme d'enregistrement CF12 orphelin sous l'en-tête hérité simple, qu'Excel jette ; elles conservent désormais la forme d'enregistrement héritée et leur mise en forme de surbrillance
- L'opérateur d'intersection de références et l'intersection implicite des résultats redimensionnés de
OFFSETet des résultats multi-cellules deINDIRECTsuivaient le mauvais axe ou rejetaient des plages valides d'une seule ligne ou colonne, en renvoyant la mauvaise cellule ou#REF! - Le lecteur de lignes en flux signalait chaque booléen de formule en cache comme FALSE et chaque erreur en cache comme
#NULL!lors de la lecture de fichiers .xls classiques - Les gros fichiers .xls dont le conteneur compound file dépasse les 109 secteurs FAT résidant dans l'en-tête ne pouvaient pas être ouverts par le lecteur compound file autonome, car la chaîne d'extension DIFAT n'était jamais suivie
- Les styles de tableau personnalisés rechargeaient leurs couleurs de remplissage et de police avec les canaux rouge et bleu échangés, si bien qu'un style enregistré revenait dans la mauvaise couleur
- Des images PNG malformées incorporées dans un classeur pouvaient faire planter le processus via une écriture hors limites pendant l'incorporation d'images PDF ou un balayage de blocs de texte sans limite ; les PNG incorporés sont désormais vérifiés en dimensions et les blocs malformés rejetés
- Les régions EMF à plusieurs rectangles se rendaient comme leur boîte englobante, les images EMF sans étendue de viewport explicite étaient mal mises à l'échelle, et le texte en exposant se rendait sous la ligne de base sur les sorties canvas, impression et métafichier
- Les règles de mise en forme conditionnelle BIFF à priorité automatique portaient toutes la priorité 1, ce qu'Excel signale comme une réparation ; les priorités automatiques sont désormais uniques par feuille comme leurs équivalents XLSX
- Le style de bordure
xlSlantDashDotétait écrit commexlDashDotDotdans la sortie des bordures .xls classiques - Un enregistrement d'en-tête de classeur chiffré tronqué levait une exception à travers
Openau lieu de renvoyer le code d'erreur de mot de passe, et plusieurs chemins d'erreur fuyaient de la mémoire pendant l'analyse de fichiers d'images ou de classeurs malformés
Version 2.384.0
Changed
- Les caches de tableau croisé dynamique XLS classiques sont enregistrés comme Excel les enregistre : les enregistrements de chaque cache vont dans leur propre flux de stockage, tandis que l'identifiant de flux, la portée du cache et la définition de source de feuille ou de plage nommée sont écrits une seule fois dans les globales du classeur ; les caches créés par des versions antérieures de HotXLS gardent leur disposition en ligne antérieure, sauf si la mise à niveau d'encadrement optionnelle est activée
- Les classeurs protégés par mot de passe chiffrent chaque flux de cache de tableau croisé dynamique comme son propre flux d'enregistrements qui repart à zéro au début du flux au lieu de poursuivre la position de chiffrement du flux du classeur
Fixed
- Un tableau croisé dynamique pouvait pointer vers le mauvais cache après l'enregistrement d'un classeur mêlant des caches lus depuis un fichier existant et des caches créés dans le code ; la référence du tableau vers son cache suit désormais l'ordre d'enregistrement réel
- Chaque paquet HotXLS portait encore la ressource de version 2.379.7, et reconstruire un paquet dans C++Builder pouvait supprimer entièrement la ressource de version ; tous les paquets portent désormais la version courante
Version 2.383.4
Fixed
- Les audits de formules profonds gardent désormais les résultats modifiés disponibles pour les formules dépendantes même quand les modifications restent dans la tolérance de rapport, et une application explicite rafraîchit ces résultats non signalés
- La tolérance relative est désormais honorée pour les résultats en cache en double précision dans les deux moteurs de classeur, tandis que les résultats inchangés évitent une comparaison en double
Version 2.383.3
Fixed
- Les enregistrements de classeurs basés sur fichier préservent désormais l'erreur Windows native quand une sortie XLSX, XLTX ou ODS achevée ne peut pas remplacer sa destination, y compris quand le nettoyage ou un callback de progression change l'état d'erreur du thread
Version 2.383.2
Fixed
- Les copies répétées de bandes de rapport et de plages réutilisent les recherches de suffixes de noms définis au lieu de rescanner chaque copie antérieure, tout en préservant le premier nom disponible, la portée de feuille et la réutilisation des noms libérés par des modifications ultérieures
Version 2.383.1
Fixed
- La reconstruction des dépendances de formules évite de scanner répétitivement les lignes de formules précédentes, ce qui réduit le coût des grandes chaînes de calcul tout en préservant les références de sortie matricielle, les dépendances inter-feuilles et l'ordre de recherche
Version 2.383.0
Added
- Les modèles Excel sans macro peuvent être enregistrés en XLTX via une sélection explicite du format de sortie, avec des fichiers ou des flux et une sortie bufferisée ou en flux
- La sortie de modèle préserve les formules, les noms définis, les zones d'impression et les métadonnées de feuille tout en laissant le comportement d'enregistrement par défaut du classeur inchangé ; les classeurs contenant du VBA sont rejetés avant que la destination ne soit écrite
Version 2.382.5
Fixed
- Les réglages phonétiques conservent l'index de police par défaut requis, ce qui évite qu'Excel rejette les classeurs enregistrés lorsque l'index vaut zéro
- Les formules dynamiques de zone d'impression et les unions de plages qualifiées par feuille survivent à un aller-retour sans ajouter de préfixe de feuille à une fonction ni tronquer des références à l'intérieur d'une expression
- Les parties de package générées et préservées partagent des déclarations de types de contenu uniques, et les propriétés personnalisées n'entrent plus en collision avec des identifiants de relations racine opaques
Version 2.382.4
Fixed
- Les références scalaires à des noms définis utilisent l'intersection de la ligne ou colonne courante tandis que les arguments de plage conservent leurs plages complètes, ce qui évite les faux cycles de dépendance dans les modèles de prêt
- L'arithmétique des formules mêlant entiers et nombres à virgule flottante conserve la précision à virgule flottante au lieu d'être tronquée à quatre décimales
- Le recalcul donne la priorité aux précédents de recherche disponibles avant de lire leurs caches, évitant ainsi des comptages de paiements périmés et d'autres résultats de recherche du même genre
Version 2.382.3
Fixed
- AGGREGATE gère les erreurs non calculées et l'agrégation imbriquée avec des réglages de sélection indépendants, préserve les calculs matriciels et propage les types d'erreurs d'origine
- Les enregistrements en XLS classique préservent les caches de formules existants jusqu'à un recalcul explicite, y compris les racines de formules partagées et matricielles ; les formules partagées traduisent les références relatives pour leurs cellules de destination
- Les références structurées prennent en charge les antislashs et les points dans les noms de tables, la syntaxe imbriquée de ligne courante et les noms de colonnes échappés, sans altérer le texte similaire à l'intérieur des chaînes de formules
- La mise en forme conditionnelle XLSX conserve les couleurs RGB, les drapeaux de police explicites, les styles de soulignement, les noms de polices, les tailles et les schémas
- Les graphiques non modifiés préservent leurs définitions d'origine et leurs décalages d'ancrage non nuls, ce qui évite de changer les couleurs, positions et tailles des séries
- La définition des marges de page n'écrit plus une orientation de page non spécifiée, et le XLS classique préserve l'absence des marges de page importées au lieu d'ajouter des valeurs par défaut qui modifieraient la position d'impression
Version 2.382.2
Fixed
- Les classeurs ODS contenant de grandes plages répétées de lignes vides s'ouvrent et s'enregistrent sans développer chaque hauteur de ligne et chaque style de cellule vide hérité en objets individuels
- La sortie ODS préserve les hauteurs de lignes explicites et les lignes stylées répétées compactes, y compris les surcharges d'une seule ligne et les hauteurs effacées ; les plages de hauteurs de lignes survivent aussi à la copie de feuilles de calcul, à l'insertion et à la suppression de lignes, au tiling et à l'export XLSX
Version 2.382.1
Fixed
- L'ouverture et l'enregistrement de classeurs XLSX avec des réglages de colonnes pleine largeur ne rescannent plus en boucle les métadonnées de colonnes ni ne copient le XML de colonnes en pleine croissance, ce qui élimine les timeouts d'aller-retour dans les classeurs de dates et de modèles tout en conservant les réglages de colonnes
- Les définitions de tableaux croisés dynamiques ODS conservent les déclarations d'espaces de noms XML héritées, y compris les extensions du producteur, de sorte que le XML enregistré reste bien formé
Version 2.382.0
Fixed
- L'enregistrement d'un classeur XLS classique garde désormais les cellules
SUBTOTALimbriquées hors des résultats de sous-totaux englobants, en préservant les totaux en cache d'origine au lieu de compter deux fois les lignes de groupe - Les graphiques XLSX sont chargés uniquement via la relation de dessin référencée par chaque feuille de calcul, de sorte qu'une partie de dessin classique non liée ne peut plus dupliquer un graphique lors d'un aller-retour
- Les définitions de tables data-pilot OpenDocument survivent à un enregistrement ODS, y compris leurs plages sources, champs, plages cibles, boutons et attributs d'extension du producteur
- Les options 0-7 de
AGGREGATEsuivent désormais les règles documentées de lignes masquées, d'erreurs et de sélection imbriquéeSUBTOTAL/AGGREGATE, aussi bien sous la forme référence que sous la forme matricielle
Version 2.381.0
Added
- Slicers de tableau (Excel 2013+) :
Worksheet.Slicers.Add(Table, ColumnName)crée une vue slicer de bout en bout pour n'importe quelle colonne de tableau — le cache de slicer sous-jacent nomméSlicer_<column>, le nom défini réservé#N/A, l'extensionslicerListde la feuille de calcul et une ancre de dessin markup-compatibility avec une mention de repli pour les anciennes versions d'Excel sont tous écrits automatiquement, et la vue peut être positionnée, légendée et stylée viaCaption,ColumnCount,StartItem,StyleName,RowHeightetSetBounds - Modèle d'aller-retour des slicers : les vues et les caches de slicers sont relus à l'ouverture (les caches partagés sont réutilisés entre les vues, supprimer la dernière vue supprime son cache), les parties et ancres de slicers non modifiées sont rejouées octet pour octet, et un cache de tableau garde sa liaison au tableau valide même quand l'enregistrement renumérote les ids de tableaux
Fixed
- Les caches de slicers écrits par les versions précédentes référençaient l'id de tableau que le fichier portait à l'ouverture ; quand l'enregistrement renumérotait les ids de tableaux à l'échelle du classeur, le
tableIdpérimé pouvait envoyer Excel en mode réparation. La liaison suit désormais le tableau à travers la renumérotation
Version 2.380.0
Added
- Graphiques Waterfall et Treemap : les types de graphiques étendus d'Excel 2016 peuvent être créés, enregistrés et rouverts. Ils sont sérialisés comme des parties extended-chart dédiées avec leur propre type de contenu, leur liaison de données à la feuille de calcul et une ancre de dessin markup-compatibility portant une mention de repli pour les lecteurs plus anciens
- Les graphiques Treemap prennent en charge les catégories hiérarchiques : chaque niveau de catégorie de la série est écrit et relu comme son propre niveau à l'intérieur de la dimension de catégories, en préservant les libellés des nœuds feuilles et parents
Version 2.379.4
Fixed
- Un conteneur XLS classique corrompu ou malveillant ne corrompt plus la mémoire lors de son ouverture. Le lecteur de fichiers composés copiait un secteur entier dans le mini stream même quand une seule partie y appartenait, suivait la table d'allocation mini au-delà de la fin de ce flux, acceptait des tailles de secteur que le format ne définit pas et dimensionnait sa table d'allocation à partir d'un compte non vérifié. Les chaînes de secteurs et de mini-secteurs sont désormais protégées contre les cycles, et un nom de flux qui remplit son champ sans caractère de terminaison est borné
- Un enregistrement de style nommant un index de format de cellule au-delà de la table des formats n'écrit plus à travers cet index. Les compteurs de références des listes partagées de formats et de clés ne vérifiaient que la borne inférieure, si bien qu'un index de 12 bits issu du fichier pouvait pointer au-delà du tableau
- Un en-tête de fichier local écrit avec des informations étendues ZIP64 ne déborde plus de son tampon : la taille d'en-tête déclarée tient désormais compte du champ extra de 28 octets que le writer ajoute. Les décalages d'entrées et les positions de flux sont suivis comme valeurs 64 bits, une entrée ZIP64 est lue avec la longueur indiquée par son champ extra plutôt que par la sentinelle, et une entrée de plus de 4 GiB est refusée au lieu d'être enregistrée comme son reste
- Un nom d'entrée ZIP contenant un séparateur Windows est normalisé. Un anti-slash isolé n'était jamais converti en barre oblique, si bien que
..\..\namepassait la vérification de directory traversal qui coupe sur les barres obliques - Une plage de masque sans borne supérieure, telle que
[a-, ne lit plus au-delà de la fin du masque, et la construction d'un masque commençant par un ensemble de caractères ne fuit plus un ensemble par masque. Les deux sont accessibles depuis les critères COUNTIF et SUMIF - La recherche de cellule entière avec caractères génériques exige désormais que le motif corresponde à la totalité de la cellule, en accord avec le comportement documenté et la comparaison de cellule entière sans caractères génériques.
FindTextavec le motifabccorrespondait auparavant aussi à une cellule contenantabcdef - La précision telle qu'affichée n'arrondit plus les cellules dont le format numérique ne comporte pas d'emplacement réservé aux chiffres. Une cellule formatée
Generalpar son nom, comme texte avec@, ou avec un format uniquement littéral était arrondie à un nombre entier - La table de chaînes partagées ne signale plus un nombre de chaînes uniques supérieur à ce qu'elle écrit, ne joint plus les segments de texte enrichi d'une chaîne supprimée à la chaîne qui réutilise son emplacement, et n'émet plus d'enregistrement de continuation ne contenant rien d'autre que son octet d'options quand une chaîne déborde uniquement à cause de sa queue de mise en forme
- L'import RTF cesse de dupliquer les caractères non ASCII. Un échappement
\\uNest suivi de caractères de repli écrits comme\\'hh, que la logique de saut ne reconnaissait pas, si bien que chacun était également émis comme texte. Les groupes sautés honorent désormais les charges utiles brutes\binN, et une table plus large ou plus haute que la grille de la feuille de calcul s'arrête au bord au lieu de lever une exception - Une référence numérique en dehors de la plage de caractères que le XML définit est rejetée à la lecture au lieu de produire un NUL embarqué, un surrogate isolé ou un point de code rebouclé. Tabulation, saut de ligne et retour chariot survivent à un aller-retour OPC sous forme de références de caractères plutôt que d'être normalisés en espaces
- L'import CSV conserve la valeur
SkipRowsentre les analyses ; elle était décrémentée sur place, si bien que le second fichier lu via le même chargeur ne sautait rien - Une partie
xl/tables/est reconnue au moment de décider quelles parties préserver ; la comparaison de préfixe était courte d'un caractère et ne correspondait jamais
Version 2.379.3
Fixed
- L'import HTML décode les références de caractères décimales.
éet toute autre forme&#NNN;produisaient un caractère NUL au lieu du caractère lui-même, car la conversion écrivait son résultat et sa position d'erreur dans la même variable et le code de succès écrasait la valeur. Les références hexadécimales n'étaient pas touchées ; les deux formes rejettent désormais les valeurs hors de la plage représentable au lieu d'émettre un caractère parasite - L'export HTML conserve la sous-adresse complète d'un lien hypertexte interne lors de la construction de sa cible d'ancre. Une sous-adresse de plus de 255 caractères était tronquée, si bien que l'ancre générée ne correspondait plus au lien
Version 2.379.2
Fixed
- Un GIF inséré via
AddPictureouImages.AddFromFileprend désormais sa taille dans le descripteur d'écran logique. Chaque GIF annonçait auparavant 100 × 100 points quelle que soit sa dimension réelle, si bien que l'image arrivait étirée ou écrasée - Le dimensionnement des BMP lit l'en-tête bitmap que le fichier déclare réellement : un
BITMAPCOREHEADERavec ses dimensions 16 bits est compris au lieu d'être lu comme des champs 32 bits, et un BMP top-down à hauteur négative ne produit plus une hauteur d'image négative - Le dimensionnement des JPEG accepte chaque marqueur de trame SOFn au lieu de se limiter à baseline, extended sequential et progressive. Les JPEG sans perte, à codage arithmétique et hiérarchiques retombaient auparavant sur le défaut de 100 × 100
Version 2.379.1
Fixed
- Les images WMF se décodent désormais comme des scènes vectorielles pour la sortie SVG, PDF et paginée. Depuis 2.363.0, le décodeur lisait chaque enregistrement comme une taille 16 bits suivie du code de fonction, mais un enregistrement de métafichier commence par une taille 32 bits, si bien que tout WMF écrit par Windows ou Office s'arrêtait à son premier enregistrement et que l'image retombait sur un placeholder raster. Les enregistrements sont désormais cadrés selon
[MS-WMF] §2.3, et les paramètres de stylo, brosse, police, texte, forme et polygone sont lus à leurs décalages spécifiés META_STRETCHDIBattendait le DIB avant le rectangle de destination et supposait un en-tête bitmap de 40 octets ; le rectangle précède désormais le DIB comme le format le stipule,BITMAPV4HEADER/BITMAPV5HEADERet les tables de couleurs sont honorés pour localiser les bits de pixels, et l'enregistrement apporte une commande d'image àXDest,YDestdimensionnée deDestWidthparDestHeightMETA_EXTTEXTOUTsaute son rectangle facultatif quandETO_OPAQUEouETO_CLIPPEDest défini, si bien que le texte dessiné avec un arrière-plan opaque n'est plus lu à partir du mauvais décalage- Les images métafichier incorporées dans un rendu de page lisent leurs pixels au décalage qu'énonce l'en-tête bitmap plutôt qu'à 40 octets fixes, si bien qu'une image avec
BITMAPV4HEADERouBITMAPV5HEADERne se rend plus comme un bruit coloré décalé
Version 2.379.0
Added
TGridToXLSfait maintenant partie du package d'exécution Free Pascal, si bien qu'uneTDBGridLazarus s'exporte comme sous la VCL : les colonnes explicites conservent leurs titres, polices, couleurs, alignements, largeurs et visibilité, une grille sans colonnes explicites exporte une colonne par champ du dataset, et le résultat s'enregistre en XLS, XLSX, HTML ou RTF via le même appelSaveAs
Version 2.378.4
Fixed
- TEXTBEFORE et TEXTAFTER lisaient leur nombre d'arguments dans une variable locale jamais affectée, de sorte que les arguments facultatifs d'instance, de mode de correspondance, de fin de correspondance et de valeur-si-introuvable pouvaient être ignorés, ou qu'un appel valide était rejeté avec #VALUE!, selon le contenu résiduel de la pile ; le nombre provient désormais de l'appel lui-même
- Un OFFSET redimensionné — dont la hauteur ou la largeur diffère de 1 — évalué dans une seule cellule comparait la cellule de formule à une ancre pas encore calculée, de sorte que l'intersection implicite pouvait renvoyer #REF! ou la mauvaise cellule ; l'ancre décalée est désormais calculée avant le test d'intersection
Version 2.378.3
Fixed
- Sous Free Pascal, la correspondance ou le remplacement d'une chaîne vide levait l'erreur d'expression régulière, si bien qu'une expression de rapport telle que
regexreplace(Code,"[^0-9]","")échouait avecREPORT_EXPRESSION_INVALID_REGEXdès que le champ était vide. Le backend FPC répond désormais comme le faitTRegExsous Delphi : un motif qui accepte une chaîne vide, tel que^$ou.*, y correspond et produit son texte de remplacement, tandis que[0-9]+ou\s+signale l'absence de correspondance
Version 2.378.0
Added
- HotXLS se compile désormais avec Free Pascal 3.2.2 et Lazarus/LCL sous Windows, Win32 et Win64. Les API de classeurs XLS et XLSX, les formules, les styles, les chemins de lecture et d'écriture directs, l'export de datasets et les aides de rendu fonctionnent tous depuis du code FPC avec la sémantique de chaînes Unicode de Delphi ; la rubrique Prise en charge de Free Pascal et Lazarus couvre la configuration applicative et les différences de backend
- Le package d'exécution
Lib/FPC/HotXLSLaz.lpks'ouvre dans Lazarus ou se compile par architecture depuis la ligne de commande viabuild-FPC-Lib.cmd, et les suites de fumée Lazarus sousTests/Lazaruscouvrent les aller-retours de classeurs, la compression, le chiffrement, les flux COM, les graphismes, la lecture de texte, les expressions régulières, l'export de datasets et les expressions de rapport - Les builds FPC utilisent des backends Pascal embarqués pour ZIP, les flux de compression et AES, si bien que les fichiers XLSX, y compris ceux protégés par mot de passe, n'ont besoin ni d'une DLL zlib ni des fichiers objets précompilés que Delphi lie ; PNG conserve son canal alpha, le dessin et la lecture EMF passent par les métafichiers Windows, et l'export TIFF multipage utilise le runtime GDI+
Version 2.377.2
Added
- Un cache de tableau croisé dynamique XLS classique écrit par HotXLS embarque désormais les enregistrements par rapport auxquels le format définit l'en-tête de cache. L'identifiant de flux et le type de données source de l'en-tête désignaient un SXStreamID et un SXVS jamais écrits, si bien qu'aucun lecteur ne pouvait vérifier l'un ni l'autre ; les deux enregistrements sont désormais écrits et les deux champs d'en-tête reprennent les mêmes valeurs, donc ils concordent par construction
- Les sous-flux de cache portent aussi SXDBEx, l'enregistrement qui suit l'en-tête de cache dans chaque cache qu'Excel écrit. Il consigne la date du dernier rafraîchissement du cache, si bien que
TXLSPivotCache.RefreshedDatesurvit désormais à un enregistrement et rechargement XLS classique comme c'était déjà le cas en XLSX TXLSPivotCache.StreamIdetTXLSPivotCache.SourceDataTypeexposent les deux valeurs, relues depuis un fichier qui les mentionne et écrites dans la paire d'enregistrements plus l'en-tête de cache. Un cache construit parAddPivotTablesignale le flux 0 et une source de type plage de feuille de calcul
Changed
- La réécriture optative de l'ancien cadrage de cache (
UpgradeLegacyPivotCacheFraming) produit désormais également ces trois enregistrements, si bien qu'un cache mis à niveau n'est pas seulement correctement cadré mais complet au même titre que ceux fraîchement écrits. Un cache qui portait déjà un SXStreamID, un SXVS ou un SXDBEx conserve ce qu'il portait ; celui dont le SXDBEx réclame des enregistrements de formule qu'HotXLS n'écrit pas reste en rejeu brut - La lecture n'est pas affectée : les fichiers écrits avant cette version se chargent exactement comme avant, et les enregistrements de cache dont HotXLS n'a toujours pas de modèle — parmi eux le DConRef ou le DConName nommant une plage source — continuent d'être préservés octet pour octet lors d'un aller-retour
Version 2.377.1
Added
- Un classeur peut désormais demander la réécriture de ses anciens sous-flux de PivotCache lors de l'enregistrement.
TXLSWorkbook.UpgradeLegacyPivotCacheFramingest désactivé par défaut ; une fois activé, un fichier XLS classique dont les caches ont été écrits par HotXLS avant v2.377.0 est enregistré avec ces caches réémis via les writers corrigés SXDB / SXFDB / SXDBB, de sorte que la série de corrections des caches de tableau croisé dynamique allant de v2.376.1 à v2.376.7 atteigne aussi les fichiers déjà existants au lieu du seul nouveau produit - La mise à niveau ne s'applique qu'aux cas où elle est prouvablement sans coût. Un cache lu depuis un fichier n'est réémis que lorsque l'intégralité de son sous-flux contenait des enregistrements modélisés par HotXLS et que son cadrage vient d'une erreur d'HotXLS lui-même ; tout le reste — chaque cache produit par Excel, et tout cache portant un enregistrement tel que SXDBEx qu'HotXLS ne conserve qu'en octets opaques — continue de rejouer ses propres octets, l'option étant activée.
TXLSPivotCache.CanUpgradeFramingdonne le verdict pour un cache donné, etRawFramingIsLegacy/RawModelIsCompleterapportent les deux éléments sur lesquels il repose - Un cache mis à niveau est écrit là où se trouvait son sous-flux plutôt que déplacé devant les autres, si bien qu'une vue de tableau croisé dynamique résout toujours vers le cache qu'elle désignait avant l'enregistrement
Fixed
- Un cache de tableau croisé dynamique XLS classique lu depuis un fichier puis remis au writer avec son drapeau de rejeu brut effacé produisait deux sous-flux de cache, celui du modèle et celui du fichier. Il n'en produit plus qu'un
Version 2.377.0
Added
- Les feuilles de calcul XLS classiques acceptent les objets graphiques incorporés :
AddChartObjectsur une feuille de calcul ancre un cadre de graphique sur la grille de la feuille (forme de contrôle hôte OBJ de type 5 plus l'ancre cliente MSODRAWING), construit le sous-flux de graphique via le générateur de graphiques partagé et emprunte la liste d'enregistrements de la feuille afin que la disposition du fichier corresponde à ce que le lecteur rattache à l'ouverture ; un aller-retour ramène le cadre avec son modèle de graphique — séries, titre et références de plages intacts
Fixed
- Les enregistrements SeriesText décodent leur charge utile de chaîne avec la bonne largeur : le lecteur transmettait un nombre de caractères là où un nombre d'octets était attendu, si bien que les légendes et étiquettes de séries 16 bits revenaient tronquées de moitié (un titre de cinq caractères lu comme deux)
Version 2.376.7
Fixed
- Les lignes en cache derrière un tableau croisé dynamique d'un fichier XLS classique sont écrites comme [MS-XLS] 2.4.276 les décrit : un enregistrement par ligne de données en cache, portant un index par champ de cache, large d'un seul octet, ou de deux octets pour un champ comptant plus de 255 valeurs distinctes. HotXLS écrivait à la place un schéma maison, comprimant chaque champ dans juste assez de bits pour compter ses valeurs et entassant plusieurs lignes dans un même enregistrement — que nul autre programme ne pouvait décoder et qui contredisait le drapeau plus-de-255-valeurs que la définition de champ portait déjà
- Excel peut désormais lire les valeurs qu'un PivotCache d'HotXLS contient au lieu de devoir les reconstruire depuis la plage source à l'ouverture du classeur — c'est de cela que dépendait un classeur dont les données source ont entre-temps été déplacées, modifiées ou supprimées
- Les lignes en cache sont également relues. HotXLS les ignorait totalement auparavant, si bien qu'un cache chargé depuis un fichier revenait avec chaque ligne pointant vers la première valeur de chaque champ, et tout ce qui était calculé à partir de ce cache suivait ces valeurs erronées. Cela vaut pour un classeur écrit par Excel comme pour un classeur écrit par HotXLS
- Un champ de cache sans valeurs ne contribue à rien dans une ligne en cache, et un champ de plus de 255 valeurs est stocké et lu à la taille élargie qu'exige le format
- Les classeurs écrits par HotXLS v2.376.6 et antérieures se chargent toujours avec leurs lignes en cache intactes
Version 2.376.6
Fixed
- L'enregistrement d'en-tête du PivotCache d'un fichier XLS classique est disposé comme le décrit [MS-XLS] 2.4.275. Le nombre d'enregistrements y occupe un champ de quatre octets et HotXLS l'écrivait sur deux, si bien que chaque champ en aval sortait d'une position trop tôt et que l'enregistrement courait quatre octets de trop — le nombre de champs de cache se retrouvait dans le nombre d'enregistrements, le mot de drapeaux atterrissait sur l'identifiant de flux, et le nombre de champs sur la longueur du nom du dernier rafraîchisseur du cache, promettant un nom que l'enregistrement était trop court pour contenir
- Les drapeaux de l'en-tête disent désormais ce qu'est réellement le cache : ses enregistrements sont-ils stockés dans le fichier, se rafraîchit-il à l'ouverture du classeur, le rafraîchissement est-il permis, et la requête de rafraîchissement s'exécute-t-elle en arrière-plan. Ces quatre réglages figuraient déjà dans la sortie XLSX et voyagent maintenant aussi avec un fichier XLS classique, avec le nom du dernier rafraîchisseur du cache
- Le type de données source de l'en-tête est écrit comme plage de feuille de calcul plutôt que laissé à une valeur que le format ne définit pas, et les nombres de champs et d'enregistrements utilisés portent les totaux réels du cache
- Le nom du rafraîchisseur est rogné aux 255 caractères que l'enregistrement autorise, et un cache sans nom n'écrit aucun nom du tout au lieu d'un placeholder vide
- Les classeurs écrits par HotXLS v2.376.5 et antérieures se chargent toujours et livrent toujours leur nombre d'enregistrements de cache. Rien d'autre n'a jamais été stocké dans l'ancien en-tête — le writer remplissait chaque champ derrière le nombre d'enregistrements de valeurs fixes qu'il ne lisait jamais dans le cache — si bien que les drapeaux et le nom du rafraîchisseur d'un tel fichier reviennent en valeurs par défaut plutôt qu'en valeurs récupérées
Version 2.376.5
Fixed
- Les noms de champs du PivotCache survivent à un enregistrement et rechargement d'un fichier XLS classique. La longueur du nom était lue au mauvais endroit de la définition de champ de cache — un index qui vaut toujours $FFFF — si bien que le nom était jeté à chaque fois et que chaque champ de cache revenait sans nom
- L'enregistrement de définition de champ de cache est disposé comme le décrit [MS-XLS] 2.4.283 : grbit, ifdbParent, ifdbBase, citmUnq, csxoper, cisxoper, catm, puis le nom du champ. HotXLS écrivait trois champs que l'enregistrement ne possède pas — un index d'élément de sous-type, un format numérique et un second nombre d'éléments — et mettait $FFFF dans des index que la spécification borne par le nombre de champs du cache
- Le mot de drapeaux de l'enregistrement décrit désormais le champ auquel il appartient : le champ porte-t-il des éléments de cache, ces éléments comprennent-ils nombres, dates ou texte, un minimum et un maximum peuvent-ils être calculés, un élément au moins n'est-il pas une date, et y en a-t-il plus de 255. Le nombre d'éléments de l'enregistrement correspond désormais au nombre d'enregistrements d'éléments de cache qui le suivent réellement
- Les noms de champs de cache plus longs que les 255 caractères autorisés par l'enregistrement sont rognés à 255 au lieu d'être écrits en pleine longueur
- Les classeurs écrits par HotXLS v2.376.4 et antérieures se chargent toujours avec leurs noms de champs de cache intacts — le nom occupait la même position dans l'ancienne disposition, donc rien de ce qui portait un nom ne le perd
Version 2.376.4
Fixed
- Les caches de tableaux croisés dynamiques des fichiers XLS classiques utilisent désormais les numéros d'enregistrements que [MS-XLS] leur donne. Sept enregistrements du sous-flux de cache sortaient sous le numéro d'un autre : la définition de champ de cache en $00C8 (SXDBB), le type de champ en $00FB (SxFormat), les index d'éléments par enregistrement en $00C5 (SXDI), et les valeurs de cache numériques, booléennes, d'erreur, de date et vides en $00CE, $00CF, $00D0, $00CC et $00CB (SXDtr, SxNil, SXTbl, SXInt, SxErr). Ils sont désormais SXFDB $00C7, SXFDBType $01BB, SXDBB $00C8, SXNum $00C9, SxBool $00CA, SxErr $00CB, SXDtr $00CE et SxNil $00CF, si bien qu'Excel peut lire un cache de tableau croisé dynamique écrit par HotXLS et qu'HotXLS peut lire un cache écrit par Excel
- Les valeurs vides d'un champ de cache de tableau croisé dynamique survivent à un aller-retour. Le writer les émettait depuis toujours mais le lecteur n'avait pas de cas pour elles, si bien que chaque vide était abandonné au chargement et que chaque valeur suivante du champ se décalait d'une position, laissant les références d'éléments du tableau croisé dynamique pointer vers de mauvaises valeurs
- Les classeurs écrits par HotXLS v2.376.3 et antérieures continuent de se charger avec leurs valeurs de cache intactes. Chaque sous-flux de cache de tableau croisé dynamique est lu dans la numérotation avec laquelle il a été écrit, décidée d'après son propre enregistrement de définition de champ, et un cache lu depuis un fichier existant est réécrit sous les numéros avec lesquels il était arrivé, si bien que rouvrir et enregistrer un ancien classeur ne modifie pas ses octets en silence
Version 2.376.3
Fixed
- Les vues de tableaux croisés dynamiques des fichiers XLS classiques écrivent désormais leur enregistrement d'extension SXEx sous le numéro que [MS-XLS] lui donne, $00F1 ; le writer utilisait $00C6, qui est SXDB, l'enregistrement d'en-tête de cache de tableau croisé dynamique — Excel cherchant l'extension de vue ne trouvait rien et un enregistrement prétendant être un en-tête de cache se retrouvait au milieu d'une feuille de calcul, si bien que les propriétés de vue que porte SXEx étaient perdues même après la correction de disposition des champs de v2.376.1
- Les classeurs écrits par HotXLS v2.376.2 et antérieures s'ouvrent toujours avec leurs vues de tableaux croisés dynamiques intactes : dans une feuille de calcul l'ancien $00C6 est toujours accepté comme l'extension de vue qu'il était censé être, et dans un sous-flux de cache de tableau croisé dynamique $00C6 est toujours lu comme l'en-tête de cache, donc rien de ce qui se chargeait ne cesse de se charger
Version 2.376.2
Fixed
- Les feuilles de graphiques 3D XLS classiques créées sans scène explicite portent désormais les drapeaux que la documentation leur attribue : le mot de drapeaux Chart3d par défaut activait un bit que l'enregistrement réserve au lieu du bit de mise à l'échelle automatique, si bien qu'un graphique 3D par défaut se rouvrait avec le regroupement actif mais la mise à l'échelle automatique désactivée et ne correspondait jamais à la scène qu'il prétendait écrire ; les graphiques passant une scène 3D explicite n'étaient pas touchés et leurs octets sont inchangés
Version 2.376.1
Fixed
- Les vues de tableaux croisés dynamiques écrivent un enregistrement SXEx dont les champs se trouvent là où les lecteurs les attendent : le corps fixe de 24 octets était décalé de deux champs, si bien qu'il annonçait deux enregistrements de mise en forme qui ne venaient jamais et laissait chaque longueur de chaîne facultative à zéro, ce que [MS-XLS] 2.4.282 interdit — ces longueurs doivent être soit le marqueur d'absence, soit une longueur réelle de 1 à 255 ; le corps démarre désormais au bon champ et marque chaque chaîne facultative absente, si bien qu'Excel lit les propriétés de vue au lieu d'un bloc charabia
- La longueur de l'enregistrement SXEx est dérivée des octets réellement écrits plutôt que d'une constante codée en dur, si bien que la taille déclarée et la charge utile ne peuvent plus diverger comme elles le faisaient avant v2.376.0
Version 2.376.0
Added
- Les feuilles de graphiques XLS classiques peuvent se lier à une vue de tableau croisé dynamique : une nouvelle surcharge de
AddChartSheetaccepte le nom de la vue pivot source et le drapeau de masquage des légendes de champs, qui s'écrivent dans les enregistrements SXViewLink ($0858, [MS-XLS] 2.4.316) et PivotChartBits ($0859, 2.4.196) des globales du graphique avant Units selon l'ABNF du Chart Sheet Substream ; l'inspection de graphiques décode les deux enregistrements — encodages de chaînes 8 bits et 16 bits compris — vers le modèle typé (marqueur de graphique croisé dynamique, nom de la vue source, drapeau de légende) et l'instantané sémantique canonique, tandis que les graphiques sans les enregistrements de liaison restent non marqués
Fixed
- Les vues de tableaux croisés dynamiques écrivent un enregistrement SXEx correctement dimensionné : l'émetteur déclarait un corps de 24 octets mais en écrivait 26, si bien que les deux octets excédentaires tombaient là où l'on attendait l'en-tête de l'enregistrement suivant et que chaque enregistrement après la vue (y compris l'EOF de feuille de calcul et tout sous-flux de feuille de graphique suivant une feuille à tableau croisé) était mal interprété, laissant les classeurs qui combinent un tableau croisé dynamique et une feuille de graphique se rouvrir sans leur graphique
- Les noms d'affichage des courbes de tendance des graphiques classiques décodent correctement les charges utiles de chaînes 8 bits ; l'ancien lecteur à caractères larges renvoyait un nom vide pour les enregistrements qu'Excel écrit avec des caractères 8 bits
Version 2.375.0
Added
- Les séries de graphiques XLS classiques acceptent des remplissages aux couleurs du thème : le style par série embarque désormais un index de couleur de thème et une teinte qui s'écrivent dans un enregistrement GelFrame après l'AreaFormat selon [MS-XLS] 2.4.131, via l'extension de couleur de thème OfficeArt (fillType, fillColor avec le RGB aplati, index de schéma fillColorExt, charge utile de teinte fillColorExtMod) ; quand aucune couleur de remplissage explicite n'est fournie, la couleur aplatie se résout depuis le thème Office par défaut avec la teinte appliquée, et l'inspection de graphiques décode l'intention de thème vers le modèle typé et l'instantané sémantique canonique
Fixed
- Le build complet multi-versions de la bibliothèque redevient vert pour chaque compilateur pris en charge : les transtypages et appels que seuls les compilateurs plus récents acceptent (un transtypage Extended de valeurs Int64, un transtypage Double dur d'un entier, un argument procédural nil dans la résolution de surcharge, l'accès à TPicture.LoadFromStream là où il est protégé, et le type de token GdiplusStartup qui a changé entre générations de VCL) ont été rendus sûrs par version de XE5 à la version courante
Version 2.374.0
Added
- Les scènes de graphiques 3D sont configurables et inspectables : une nouvelle surcharge de
AddChartSheetaccepte rotation, élévation, distance de perspective, hauteur, profondeur, écart, ainsi que les drapeaux cluster, autoscale, right-angle-scaling et two-dimensional-walls, qui s'écrivent dans l'enregistrement Chart3d selon [MS-XLS] 2.4.46, et l'inspection de graphiques redécode la scène vers le modèle typé (Scene3D) à la lecture ; les graphiques qui conservent les surcharges précédentes émettent toujours les défauts correspondant à Excel, octet pour octet
Version 2.373.0
Added
- Les séries de graphiques XLS classiques acceptent des surcharges de style par série : couleur et style de ligne, couleur de remplissage, et forme, couleurs et taille de marqueur s'écrivent dans le bloc de mise en forme de série avec le drapeau automatique effacé afin qu'Excel honore les valeurs fournies, et l'inspection de graphiques redécode les enregistrements LineFormat, AreaFormat et MarkerFormat vers le modèle typé et l'instantané sémantique canonique
Version 2.372.0
Added
- Les séries de graphiques XLS classiques acceptent des références nommées et externes pour les catégories et les valeurs : le texte qui n'est pas une simple plage A1 compile via le moteur de formules du classeur, et l'enregistrement BRAI porte un élément de zone de graphique contenant la formule compilée afin que la passe d'enregistrement la resérialise avec les index courants du stockage de noms définis ; l'inspection de graphiques décompile la référence vers son nom à la lecture, tandis qu'un texte irrésoluble conserve le BRAI placeholder vide
Version 2.371.0
Added
- Les séries de graphiques XLS classiques peuvent se lier au groupe d'axes secondaire : marquer une série dans
AddChartSheetporte AXESUSED à deux, émet un second bloc AxisParent avec ses propres axes de catégories et de valeurs plus son propre groupe de graphique selon l'ABNF du Chart Sheet Substream de [MS-XLS], et achemine la série via SerToCrt vers le second groupe ; l'inspection de graphiques décode la liaison au groupe de graphique par série à la lecture
Version 2.370.0
Added
- Les séries de graphiques XLS classiques acceptent des étiquettes de données :
AddChartSheetémet un enregistrement AttachedLabel avec les drapeaux show-value, show-percent, show-category-name, show-label-and-percent, show-bubble-size et show-series-name (disposition des bits de [MS-XLS] 2.4.5), et l'inspection de graphiques redécode AttachedLabel ainsi que l'enregistrement d'étiquette étendue DataLabExtContents, séparateur compris, vers le modèle typé et l'instantané sémantique canonique
Version 2.369.0
Added
- L'inspection de graphiques XLS classiques décode désormais la structure des groupes d'axes : AXESUSED expose le nombre déclaré de groupes d'axes et chaque axe indique s'il appartient au groupe AxisParent primaire ou secondaire, l'index de groupe étant transporté dans l'instantané sémantique canonique
Version 2.368.0
Added
- Les courbes de tendance et barres d'erreur des graphiques BIFF se décodent désormais vers le modèle de graphique typé à la lecture : chaque bloc Series expose ses enregistrements Trendline avec type de régression, ordre ou période, interception (automatique comprise), drapeaux d'affichage de l'équation et du R², périodes de prévision et de rétro-prévision, et nom d'affichage, plus ses enregistrements SerErrBar avec côté de direction, type de valeur, embouts et magnitude
- L'instantané sémantique Classic mappe les courbes de tendance et barres d'erreur dans les conteneurs canoniques partagés au lieu de lever une exception, si bien que les classeurs à séries de graphiques avancées se comparent de façon déterministe et que les changements de courbes de tendance altèrent le flux canonique
Version 2.367.0
Added
- RecalcAndVerifyEx exécute un audit de calcul approfondi sur les deux moteurs de classeurs : chaque formule s'évalue une fois à travers le graphe de dépendances vers une surcouche de résultats isolée afin que les cellules dépendantes lisent cette passe au lieu de caches périmés, les échecs d'évaluation se classent en catégories typées (arguments non pris en charge, références circulaires, références externes refusées ou manquantes, tables de données ignorées, annulation, échecs internes) avec codes de résultat, et chaque échec porte une pile d'appels bornée
- L'audit honore un budget d'incidents avec un ordre stable par feuille, ligne, colonne et catégorie, un puits de progression capable d'annuler aux frontières de nœuds, des tolérances numériques configurables, et un ApplyResults optatif qui valide atomiquement les valeurs recalculées après une passe entièrement réussie sur une structure de classeur inchangée ; le défaut reste strictement en lecture seule
Changed
- Les points d'entrée RecalcAndVerify et CalculateAndVerify existants conservent leur sémantique précédente de comparaison superficielle comme shims de compatibilité tout en partageant les nouveaux champs de rapport
Version 2.366.0
Changed
- L'export PDF assemble désormais les documents via un writer d'objets séquentiel qui diffuse chaque objet directement vers la destination, sans construire de copie intermédiaire du document entier ; les documents non signés s'écoulent directement vers des flux en avant seule, tandis que les documents signés s'assemblent dans une spool bornée qui reçoit les correctifs de contenu ByteRange et de signature avant une unique copie en avant
- Les charges utiles des pièces jointes PDF se copient de leurs spools fournisseurs vers le document final en blocs fixes et référencent leur taille de flux via un objet de longueur indirect, maintenant la mémoire de pointe plate pour des pièces jointes de plusieurs centaines de mégaoctets
Fixed
- Les condensats de signature se calculent désormais de façon incrémentale sur les deux plages d'octets couvertes du document assemblé au lieu de passer par une copie complète du document, et les champs de signature réservés se localisent depuis l'objet de signature lui-même plutôt qu'en balayant les octets assemblés
Version 2.365.0
Added
- Le texte de signature PDF visible passe désormais par le pipeline de polices Unicode embarqué avec alignement à gauche, centré ou à droite, taille et couleur configurables, et style gras ou italique, couvrant tout système d'écriture dans les noms de signataires, motifs et emplacements
- Les images d'apparence de signature PDF acceptent des charges utiles JPEG avec des dimensions dérivées du marqueur de trame, tandis que les images surdimensionnées ou corrompues échouent de façon déterministe avant le calcul du condensat
- Les pièces jointes PDF exposent une politique explicite de noms dupliqués, spoolent les charges utiles fournisseurs volumineuses vers un fichier temporaire au-delà d'un seuil d'octets configurable, et rejettent les noms hostiles aux feuilles contenant des séparateurs de chemin ou des caractères de contrôle
Changed
- Les arbres de noms des pièces jointes PDF se trient désormais selon leurs octets de noms encodés selon ISO 32000-1 7.9.6, et la collection de pièces jointes reste gelée pendant l'exécution des fournisseurs afin que les ajouts réentrants échouent de façon atomique
Version 2.364.0
Added
- Les images EMF et WMF incorporées rejouent les crochets de chemin avec des passes de remplissage, de trait et combinée trait-et-remplissage, les rectangles arrondis, arcs, accords, secteurs et arcs angulaires via une conversion exacte arc-vers-Bézier, les remplissages et cadres de régions résolus depuis des rectangles RGNDATA bornés, et les stylos étendus géométriques ou cosmétiques, le tout aplati dans la scène partagée immuable avec les mêmes frontières fail-closed contre les enregistrements de clipping, d'escape et privés
Version 2.363.0
Added
- Les images EMF et WMF incorporées rejouent désormais via une liste blanche étendue d'enregistrements sûrs : piles d'état de contexte de périphérique avec sauvegarde et restauration, mappage fenêtre et viewport avec transformations monde, tables d'objets stylo et brosse y compris objets stock, rectangles, ellipses, chaînes de lignes, polygones, polylignes et courbes de Bézier avec styles de pointillés, exécutions de texte bornées avec polices, couleurs et alignement, et images stretch-DIB restreintes réencodées en PNG, tandis que les enregistrements d'état inconnus échouent toujours fermement vers le repli raster borné au lieu d'invoquer la lecture des métafichiers de la plateforme
Fixed
- Les images WMF analysent désormais la disposition standard d'en-tête d'enregistrement de deux octets, si bien que les vrais métafichiers placeable et standard se décodent au lieu des seuls montages synthétiques
Version 2.362.0
Added
- XLS classique et XLSX préservent désormais l'état matriciel des formules de table, les modes IME typés de validation de données, les indices de thread de calcul, la présence du forçage de calcul complet, les indices de rafraîchissement global et les noms de code de classeur via leurs représentations binaires ou OOXML natives
RecalcAndVerifyrenvoie un audit de calcul structuré borné avec des catégories stables de cache, d'analyse, de fonction manquante et de nom manquant, tout en laissant les caches de formules et la sémantique du classeur inchangésTXLSPageImageExporter.ExportRangeeffectue le rendu d'un rectangle de cellules demandé en un unique PNG ou JPEG compact sans papier, marges, en-têtes, pieds, titres d'impression ni sauts de page, et les événements avant/après d'image de page peuvent dessiner sur le canevas d'encodage réel- Un exporteur d'images de cellules dédié mesure, rend et enregistre n'importe quel rectangle de cellules classique ou XLSX en une seule image compacte avec résolution, échelle, format et qualité JPEG configurables ; arrière-plans transparents ou colorés, commutateurs indépendants d'objets, de quadrillage et de bordures de cellules, budgets de pixels et d'octets, et enregistrement de fichier via un remplacement atomique dans le même dossier qui laisse une cible existante intacte en cas d'échec
- Les événements de peinture d'image de page reçoivent désormais un contexte complet en lecture seule portant le canevas vivant, les limites en pixels, la taille de page en points, la résolution, l'échelle, les numéros de page du document et de la feuille, le nombre total de pages et la feuille de calcul d'origine, se déclenchent exactement une fois par trame rendue, trames TIFF multipages comprises, restent silencieux pendant la mesure, et ne déclenchent jamais leur événement de suite ni n'écrivent d'octets d'image partiels quand l'événement précédent lève
TXLSSvgExportprend en charge des callbacks complets par page, des espaces de noms d'ID de document et de page déterministes, et des superpositions d'hypertexte sûres optatives avec ScreenTips et attributs sécurisés de nouvelle fenêtre- Les exporteurs HTML classique et XLSX fournissent une vue de feuille de calcul optative avec en-têtes sémantiques de lignes et de colonnes plus un hot tracking en CSS pur borné, et tous deux rejettent les schémas d'URI actifs ou locaux tout en conservant le texte d'affichage des liens
- Les signatures PDF visibles peuvent utiliser des images d'apparence PNG contained, covered ou stretched, et les pièces jointes PDF peuvent obtenir leur charge utile paresseusement depuis une interface source à appel unique lors de chaque enregistrement
- Un décodeur vectoriel EMF et WMF borné valide en-têtes, tailles d'enregistrements, totaux, placement exact de l'EOF et restrictions d'escape, puis rejoue son sous-ensemble sûr de commandes rectangle via les backends partagés Canvas et SVG sans invoquer la lecture des métafichiers du pilote
Changed
- L'écriture directe XLSX peut rédiger les attributs matriciels de formules de table et les modes IME typés de validation de données, tandis que les formules de table matricielles ne sont plus silencieusement développées en formules scalaires par ligne
Version 2.361.99
Changed
- Le PDF balisé automatique émet désormais les images XLSX informatives comme éléments de structure Figure indépendants avec texte alternatif Unicode, identifiants de contenu marqué denses et propres à la page, entrées exactes de l'arbre parent, et un élément sémantique par instance visible tandis que les charges utiles d'images égales partagent toujours un seul XObject ; les images sans texte alternatif restent des artefacts décoratifs
Version 2.361.98
Fixed
- Les formules de recherche qui balayent une plage couvrant leur propre cellule (VLOOKUP, HLOOKUP, LOOKUP, XLOOKUP, XMATCH, MATCH) ne signalent plus de fausses erreurs de référence circulaire lors du recalcul, tandis que les éditions à l'intérieur de la plage balayée déclenchent toujours le recalcul de la formule
- Les critères de texte AutoFilter de plus de 255 caractères sont plafonnés à la limite de l'enregistrement de filtre au lieu d'écrire une condition de filtre automatique corrompue
- Les espaces consécutifs utilisés par l'opérateur d'intersection implicite sont préservés lors de la régénération du texte de formule au lieu de se réduire à un espace unique
- Les noms définis intégrés au-delà des zones d'impression, titres d'impression et bases de filtres (zones de consolidation, extract, database, criteria, recorder, titres de feuilles et marqueurs de la famille Auto_Open) sont préservés verbatim à l'ouverture et à l'enregistrement des classeurs XLS classiques
Version 2.361.97
Added
- Les classeurs XLS classiques et XLSX exposent désormais une politique d'affichage d'objets à trois états partagée avec préservation sans perte des sources intouchées et mappage inter-formats ; les objets masqués n'étendent plus la sortie paginée ou HTML et n'entrent plus dans les chemins de rendu de dessins et de médias
- La visionneuse de classeurs effectue le rendu de placeholders nommés légers pour les objets en mode placeholder, tandis que les exporteurs PDF, SVG, bitmap, impression et HTML conservent les objets complets par défaut et offrent une option placeholder explicite qui évite le décodage d'images et la construction de scènes de graphiques
Version 2.361.96
Changed
- Les dispositions de graphiques manuelles préservent désormais les champs sources indépendants et les jetons invalides, résolvent les coordonnées de facteur et de bord avec un placement borné préservant la taille, honorent les cibles de tracé internes et externes plus la superposition de titre et de légende, convertissent la géométrie ODF prise en charge via des distances absolues de graphique, et rendent un placement cohérent du titre, de la légende, de la zone de tracé et des titres d'axes sur les sorties pagination, SVG, PDF, image, aperçu, impression, visionneuse et HTML
Version 2.361.95
Changed
- Les étiquettes de données de graphiques issues de cellules XLSX appartiennent désormais à chaque série avec formules complètes, caches indexés, visibilité explicite partagée et par point, rafraîchissement vivant de la feuille de calcul, repli vers cache externe, translation de formules lors des copies et de l'expansion de rapports, et une composition d'étiquettes personnalisée-d'abord cohérente sur les sorties pagination, SVG, PDF, image, aperçu, impression, visionneuse et HTML
Version 2.361.94
Changed
- Les axes de catégories de graphiques multi-niveaux préservent désormais les caches hiérarchiques épars et les plages bidimensionnelles vivantes, construisent des étendues conscientes des parents en temps linéaire, honorent les comportements mono-niveau, inversé, droite-à-gauche, masqué et catégories-vides, et rendent des étiquettes et séparateurs de hiérarchie cohérents sur les sorties pagination, SVG, PDF, image, aperçu, impression, visionneuse et HTML ; l'export ODS utilise la plage de catégories de feuille
Version 2.361.93
Changed
- Les axes de dates infèrent désormais les unités de calendrier une fois pour toutes les séries visibles, choisissent des intervalles automatiques bornés à partir de l'étendue visible, de la largeur de l'axe, de la police mesurée des étiquettes, du format numérique et de la rotation, et dérivent étiquettes, coordonnées, graduations et quadrillages de collections partagées de graduations principales et secondaires sur les sorties pagination, SVG, PDF, image, aperçu, impression, visionneuse et HTML
Version 2.361.92
Changed
- Les axes de dates XLSX préservent désormais les formats numériques d'axe et l'état de liaison source, rendent des étiquettes formatées avec style de texte et rotation, et honorent la direction inversée tout en conservant un espacement continu pour les dates dupliquées et éparses sur les sorties pagination, SVG, PDF, image, aperçu, impression, visionneuse et HTML
Version 2.361.91
Changed
- Les axes de dates XLSX préservent désormais le fait que les unités de calendrier de base, principales et secondaires et la détection automatique des catégories étaient omises ou fournies explicitement, y compris les unités de jours explicites et les valeurs false ; les enregistrements d'extension d'axe de dates Classic exposent des champs typés, conservent les valeurs brutes masquées ou invalides et peuvent mapper les réglages actifs vers le modèle d'axe XLSX
Version 2.361.90
Changed
- Les graphiques à axe de dates XLSX préservent désormais l'espacement continu des dates et rendent des intervalles principaux en jours, mois ou années avec le système de dates 1900 ou 1904 du classeur sur les sorties paginée, SVG, PDF, image, aperçu, impression, visionneuse et HTML ; la sortie par pagination honore aussi les graduations secondaires et quadrillages configurés
Version 2.361.89
Added
- La visionneuse de classeur met désormais en mosaïque les arrière-plans de feuille valides derrière les cellules sans remplissage, tandis que les sorties d'impression, PDF, SVG, bitmap, metafile et HTML Classic ou XLSX exposent une option explicite
ExportSheetBackgroundImages, désactivée par défaut
Changed
- Le rendu paginé des arrière-plans préserve désormais la phase de mosaïque relative à la feuille d'une page à l'autre, décode chaque arrière-plan une seule fois par session de rendu, réutilise une même ressource PDF image XObject ou SVG et ignore les payloads corrompus avec un seul diagnostic
Version 2.361.88
Added
- Les feuilles Classic exposent désormais une création typée d'images d'arrière-plan et une ressource d'arrière-plan partagée en lecture seule, lisent et écrivent des enregistrements d'arrière-plan BIFF8 avec découpage continu du payload, reconstruisent les payloads bitmap en données BMP standard, préservent octet par octet les formats natifs non pris en charge et inconnus avec diagnostics, dupliquent la propriété de l'arrière-plan en copie profonde et convertissent les arrière-plans connus dans les deux sens entre XLS et XLSX
Version 2.361.87
Fixed
- Les copies de feuilles XLSX conservent désormais les octets de l'image d'arrière-plan et le type de média, dans le même classeur comme d'un classeur à l'autre : les copies internes au classeur réutilisent le média source préservé, les copies entre classeurs réattribuent la propriété du média avant l'enregistrement
Version 2.361.86
Added
- Les classeurs Classic XLS et XLSX exposent
AllowUnsafeFormulaCallbacks, et l'évaluation contextuelle fournit l'option correspondante par appel ainsi que le statut structuréxlfeUnsafeFunctionDenied
Security
- Les noms de formule externes et de style macro dangereux n'atteignent plus par défaut les gestionnaires de fonctions utilisateur locaux au classeur, globaux au processus, du résolveur ou d'événement, et le refus intervient avant l'évaluation des arguments de la formule
Version 2.361.85
Added
- Les classeurs Classic XLS et XLSX exposent
AuditFormulaSymbolspour des diagnostics structurés de fonctions inconnues, de noms inconnus et de syntaxe sur les cellules de formule et les noms définis, avec des statistiques par opération sur les formules uniques et les accès au cache
Changed
- Les fonctions et noms inconnus préservés s'évaluent désormais en erreurs Excel
#NAME?sur les chemins de calcul direct, dépendant, contextuel, série et parallèle - Les changements d'enregistrement de fonctions utilisateur locaux au classeur ou globaux au processus, comme les changements de formule des noms définis, invalident désormais l'état de calcul concerné avant le recalcul suivant
Fixed
- Les erreurs de formule lues depuis des cellules en cache dépendantes restent désormais des erreurs typées au lieu de passer par la conversion scalaire et de lever une exception de conversion Variant
Version 2.361.84
Added
- L'affectation de formules normale en XLS classique et XLSX applique désormais la stratégie de saisie de formules du classeur de manière atomique, de sorte qu'un rejet strict laisse la valeur de cellule, le cache de formules et les dépendances inchangés tandis que le mode de préservation stocke les fonctions et noms inconnus
Changed
- Le XLS classique écrit les appels inconnus préservés via des jetons de fonctions utilisateur de compléments BIFF et conserve le texte des noms inconnus préservés à travers l'enregistrement, la réouverture et la conversion XLS/XLSX
- La validation de saisie de formules reconnaît les fonctions utilisateur de rappel configurées, les éléments appelables
LAMBDAetLET, les lambdas de noms définis, les espaces réservés de rapport, les liaisons externes enregistrées et les références structurées valides sans invoquer les gestionnaires
Fixed
- La validation XLSX préserve désormais les références structurées valides imbriquées et de la ligne courante et ne réutilise plus de texte de colonne périmé lors de l'analyse d'une référence de table non résolue
Version 2.361.83
Changed
- L'affectation de valeurs en XLS classique et XLSX applique désormais
FormulaEntryPolicy.EmptyStringModede manière cohérente : la valeur par défaut efface les chaînes vides exactes, le mode de préservation stocke une chaîne vide constante, etNullouUnassignedefface toujours la cellule - Le chargement natif de XLS, XLSX et ODS ainsi que les conversions XLS vers XLSX et XLSX vers XLS préservent désormais les chaînes vides constantes fiables sans les confondre avec des cellules absentes ni avec des formules telles que
="" - Les écrivains de lignes ou de colonnes de chaînes et Variant XLSX conservent les chemins rapides de stockage compacté tout en laissant les entrées effacées absentes et en stockant les chaînes vides exactes uniquement en mode de préservation
Version 2.361.82
Added
- Les classeurs XLS classiques et XLSX exposent désormais une
FormulaEntryPolicypartagée, tandis que les deux moteurs de feuilles de calcul fournissent des méthodesValidateFormulaEntrysans modification qui renvoient un incident, une action et un symbole inconnu structurés avant qu'un appelant ne modifie une cellule
Changed
- La validation de saisie de formules distingue désormais une entrée vide exacte des formules renvoyant une chaîne vide, sépare les fonctions inconnues, les noms inconnus, les échecs de syntaxe, les cibles non valides et les limitations de format de cible, et reconnaît les fonctions utilisateur enregistrées sans invoquer leurs gestionnaires
Version 2.361.81
Changed
- Les insertions ou suppressions de lignes ou de colonnes entières remappent désormais de manière cohérente dans XLS et XLSX les zones de sélection ordonnées et la zone active de chaque volet, en préservant l'ordre des zones survivantes et en créant une cellule frontière de repli lorsque toutes les zones sont supprimées
- La normalisation des sélections de volets volumineuses, l'édition structurelle et les requêtes utilisent désormais des générateurs linéaires amortis et une croissance de capacité au lieu de copies répétées de chaînes complètes ou de tableaux
Fixed
- Le XLS classique préserve désormais octet par octet les corps d'enregistrements
Selectionmalformés ou contradictoires tout en signalantxlsDiagnosticSelectionRecordInvalid, au lieu d'exposer un état typé partiellement fiable
Version 2.361.80
Added
TXLSWorksheetetTXLSXWorksheetexposent désormais des méthodes homologuesTryGetWindowScrolletScrollWindowpour lire et modifier la première cellule visible de n'importe quel volet logique existant avec des coordonnées indexées à partir de un
Changed
- L'état de défilement des quatre volets préserve désormais les axes partagés supérieur, inférieur, gauche et droit de manière indépendante à travers l'enregistrement, l'ouverture et la copie de feuilles de calcul XLS et XLSX, tandis que les volets absents et les coordonnées non valides échouent sans modifier l'état de la vue
Version 2.361.79
Changed
- Les feuilles de calcul XLS classiques conservent des groupes de sélection ordonnés indépendants pour chaque volet, agrègent les enregistrements
SelectionBIFF consécutifs en une seule séquence logique, préservent les corps d'enregistrements intacts et copient l'état de sélection complet avec la feuille de calcul - Les sélections classiques de plus de 1369 zones sont écrites sous la forme de segments consécutifs conformes aux standards tout en conservant un seul index de zone active agrégé à travers chaque segment
Version 2.361.78
Added
TXLSWorksheetetTXLSXWorksheetexposent désormais des méthodes homologuesGetSelectedAreasetSelectAreassensibles aux volets via le type partagéTXLSPanePosition
Changed
- Les requêtes de sélection de volets renvoient des instantanés ordonnés propriété de l'appelant avec l'index de la zone active, préservent les zones qui se chevauchent et laissent l'état de la feuille de calcul inchangé lorsqu'un volet est absent ou qu'une mise à jour est non valide
Version 2.361.77
Added
IXLSWorkbook,TXLSWorkbooketTXLSXWorkbookexposent désormais des méthodes homologuesSaveSemanticSnapshoten flux etComputeSemanticHashSHA-256 incrémental avec des profils Content et SecurityComplete, plus des options explicites d'état de visionneuse, de métadonnées volatiles et de cache de formules
Changed
- Les instantanés sémantiques parcourent les modèles de classeurs éparses sans matérialiser un instantané complet, et les opérations d'instantané comme de hachage détiennent un bail de lecture, de sorte que les mutations publiques concurrentes échouent avant de modifier l'état du classeur
Version 2.361.76
Added
- Le modèle de graphiques XLS classique typé expose désormais les titres de graphique, d'axe de catégories et d'axe de valeurs
Fixed
- L'extraction du modèle de graphiques XLS classique identifie désormais séries, légendes, groupes de graphiques, axes, état 3-D, étiquettes de séries et formules sources de séries à partir de leurs enregistrements BIFF définis
- Les positions de légendes et la classification secteurs contre anneaux sont décodées à partir de leurs champs d'enregistrements définis
Version 2.361.75
Added
- Le FeatureShowcase Delphi et le XlsxFeatureGallery C++Builder démontrent désormais le même flux de contexte de données de rapport compilé, de table en mémoire, d'accès strict aux données, de poursuite après erreur récupérable, de feuille de calcul de diagnostic, de résultat d'exécution immuable et de sortie de fichier atomique
- Le thème du reporting compilé fournit désormais des exemples Delphi et C++Builder homologues, y compris l'acquisition d'interfaces intelligentes C++Builder requise pour les tables de rapport à interfaces
Fixed
- La galerie de fonctionnalités XLSX de C++Builder lie le package statique HotXLS complet correspondant à la version, de sorte que les dépendances d'implémentation des rapports compilés se résolvent sans directives d'éditeur de liens fragiles par unité
Version 2.361.74
Changed
RunToStream,RunToFileetRunToEncryptedFilepartagent désormais une transaction de sortie unique qui publie un classeur sérialisé seulement une fois la génération et l'enregistrement du rapport terminés- La sortie de rapport non chiffrée préserve le format du classeur modèle, y compris la sortie ODS à partir de modèles ODS, tandis que la sortie chiffrée reste un conteneur Office chiffré
Fixed
- Les échecs de sérialisation, de remplacement, d'annulation et les échecs fatals de rapport laissent inchangés les flux, fichiers et fichiers chiffrés de destination existants et libèrent les sessions de données par exécution et le stockage temporaire avant de retourner
Version 2.361.73
Added
- Les bandes de rapport de plages nommées et de tableaux Excel exposent désormais
ErrorMode,StrictDataAccess,RuntimeLimitset des instantanés immuablesLastResult, avec un état de bandeCompletedWithErrorsdistinct
Changed
WriteAndContinuepeut écrire une erreur de ligne explicitement récupérable comme texte de diagnostic littéral, consigner la ligne du curseur source et la cellule de sortie réelle, puis poursuivre les cibles ultérieures de cette ligne et les lignes d'entrée suivantes- Les expressions de rapport consomment les valeurs typées d'instantanés de bandes avant de revenir au texte, en préservant les valeurs numériques, de date, booléennes et autres valeurs Variant prises en charge pendant l'évaluation des expressions
Fixed
- Les échecs fatals de cible, d'annulation et de limite d'exécution pendant l'expansion de bande restaurent les cibles sources et la structure insérée, effacent les indicateurs de diagnostic annulés par restauration et publient zéro cible appliquée
Version 2.361.72
Added
TXLSReportRuntimeLimitsborne le nombre d'incidents d'exécution conservés, la longueur des messages assainis et la mémoire des incidents, tandis queRuntimeDiagnosticsSheetNameécrit facultativement une feuille de calcul de diagnostic structurée- Les erreurs de données explicites du résolveur, les divisions par zéro dans les expressions et les expressions régulières non valides portent désormais des catégories d'incidents et des codes d'erreur stables propres au fournisseur ou à l'expression
Changed
WriteAndContinuepréserve les cibles hors cellules sûres et consigne leur incident, tandis que les noms de feuilles de calcul et les formules de noms définis restent des cibles structurelles à échec immédiat- Les résultats d'erreur de données du résolveur restent récupérables lorsqu'ils sont servis depuis le cache d'alias par exécution, tandis que les exceptions levées par un résolveur restent fatales
Security
- Les messages d'exécution s'arrêtent à la première ligne, masquent les formes courantes d'identifiants et de jetons porteurs, et appliquent les limites de nombre, de longueur et de mémoire avant de modifier la cible défaillante
Version 2.361.71
Added
- Les cellules exactes
{{#usertable(alias, logicalName, providerKey, name=expression)}}se compilent en déclarations de tables tardives typées, etTXLSCompiledReportTemplate.UserTableCountindique le nombre de déclarations séparément des cibles de sortie TXLSReportTemplateChecker.DataContextvérifie au préalable les clés de fournisseur enregistrées, les bornes des paramètres typés, les déclarations malformées et les conflits d'alias insensibles à la casse sans invoquer de résolveur
Changed
- Les modèles de rapport et les générateurs évaluent les paramètres de déclaration avant les écritures de cible, les enregistrent dans la session d'exécution en cours et ne résolvent une table déclarée que lorsque
dbvalueoudbcountréférence son alias pour la première fois - Les déclarations égales répétées partagent une seule requête, tandis que les déclarations qui réutilisent un alias avec un nom logique, un fournisseur, un ordre de paramètres, un type ou une valeur différents échouent avec l'emplacement de la cellule déclarante avant toute modification du classeur
Security
- Les déclarations de tables utilisateur n'acceptent qu'une clé de fournisseur enregistrée et des paramètres de données typés et bornés, rejettent l'accès aux tables de données dans les expressions de paramètres et n'exposent aucun champ de modèle pour du SQL, des chemins, des URL ou du texte de commande
Version 2.361.70
Added
TXLSReportDataRequesttransmet àIXLSReportDataResolverune identité de table nommée ou utilisateur, des paramètres typés, l'emplacement source et un contrôle d'exécution en lecture seule, dont les états de résultat explicites distinguent les issues non traitée, résolue, introuvable et erreur de donnéesTXLSReportDataContext.RegisterResolver,RemoveResolveretClearResolversgèrent un registre de résolveurs nommés insensible à la casse, tandis queTXLSReportDataLimitsborne les alias, résolveurs, paramètres, noms, messages et schémas de tables renvoyés
Changed
- Chaque session de données de rapport capture le registre des résolveurs dans une recherche en O(1), conserve l'autorité des tables explicites, adapte les fournisseurs de tables hérités, met en cache les requêtes typées par alias et rejette tout alias réutilisé dont le nom logique, le fournisseur, l'ordre des paramètres, le type ou la valeur diffère
- Les exécuteurs de rapport et les bandes transmettent désormais un contrôle d'annulation thread-safe tout au long de la résolution des données, s'arrêtent après annulation sans valider la cible active et laissent un alias annulé disponible pour une nouvelle tentative propre au lieu de mettre en cache l'annulation comme une erreur de données
Security
- Les requêtes de données typées rejettent les caractères de contrôle, les coordonnées source négatives, les noms de paramètres dupliqués, les tableaux Variant ou références non pris en charge, les chaînes excessives, les alias ou fournisseurs en trop grand nombre et les schémas de tables surdimensionnés avant tout travail risqué ou modification du classeur
Version 2.361.69
Added
TXLSXWorksheet.ClearRowHeightetClearColWidthsuppriment un remplacement explicite de dimension sans perturber les autres métadonnées de lignes ou de colonnes
Changed
- Les cibles de rapport compilées terminent désormais l'évaluation des expressions avant d'invoquer la mise en forme dynamique et valident le contenu des cellules, les formats numériques, les hauteurs de lignes et les largeurs de colonnes via une seule frontière de restauration
- Les diagnostics de cellules récupérables dérivent les styles de police rouge et de remplissage jaune de la police existante de la cellule, préservent le reste du style de la cellule et réutilisent des styles mutualisés pour des polices de base identiques et des exécutions répétées de l'exécuteur
Fixed
- Un échec d'évaluation récupérable ne laisse plus de formats numériques dynamiques ni de dimensions explicites de lignes et de colonnes derrière lui, et les écritures de diagnostic effacent désormais toute formule avant de stocker le texte littéral
Version 2.361.68
Added
- Les exécuteurs et générateurs de rapports compilés exposent
ErrorMode,StrictDataAccesset unLastResultimmuable avec état terminal, nombre d'applications, détails des échecs et incidents d'exécution ordonnés WriteAndContinuepeut remplacer les échecs de données de cellules explicitement récupérables par des diagnostics littéraux et se terminer enCompletedWithErrors, tandis que le modeStoppar défaut reste compatible
Changed
- L'accès strict aux données signale les tables manquantes, l'accès aléatoire indisponible, les lignes manquantes et les champs manquants par des codes d'erreur stables lorsqu'aucun repli explicite de modèle n'existe
- Seuls les échecs de données explicitement marqués comme récupérables peuvent se poursuivre ; les échecs structurels, de rappel, d'annulation, de ressource, de sécurité, de sérialisation et les autres échecs fatals arrêtent toujours le rapport
Fixed
- Les échecs de sortie vers fichier ou fichier chiffré publient désormais un résultat d'exécution en échec au lieu de conserver un résultat terminé de la phase précédente de génération du classeur
Version 2.361.67
Changed
- Les modèles compilés, exécuteurs, bandes de plages et bandes de tableaux Excel résolvent désormais
dbvalueetdbcountvia une session de données isolée unique par exécution logique - Les alias répétés sont chargés une seule fois au sein d'une exécution, les exécutions suivantes rechargent les données du fournisseur, les exécutions concurrentes conservent des caches indépendants et les deux passes de
PreprocessAndRunpartagent un instantané de table cohérent - Les expressions de bandes de rapport ne lient que leurs variables de ligne ou de colonne, si bien que les noms de tables littéraux et les variables d'emplacement intégrées ne sont plus confondus avec des colonnes sources
Fixed
- Les sessions de données de rapport et leurs instantanés de fournisseur sont libérés après une exécution réussie, annulée ou en échec, y compris en cas d'exceptions de fournisseur et de nouvelles tentatives de l'exécuteur réutilisable
Version 2.361.66
Added
TXLSReportDataContext.BeginRunrenvoie un instantanéIXLSReportDataSessionisolé avec inspection d'état et comptages d'alias résolus ou mis en cache
Changed
- Les sessions de données de rapport utilisent un cache de hachage insensible à la casse pour les tables explicites, les résultats tardifs de fournisseurs, les alias manquants et les erreurs de données de fournisseurs
- Chaque alias distinct atteint la chaîne de fournisseurs au plus une fois par session, les résultats de fournisseurs restent liés à l'alias demandé et la récursion sur un même alias échoue immédiatement
- Les appels directs à
TXLSReportDataContext.TryGetTableetRequireTableconservent un cache de compatibilité séparé, invalidé lorsque les enregistrements changent
Version 2.361.65
Added
IXLSXImageBlobetTXLSXImageBlobfournissent des charges utiles immuables d'images matricielles et SVG avec empreintes SHA-256 calculées une seule fois, taille en octets et clé de cache facultativeTXLSReportImageResult.CacheKeypermet à un fournisseur d'images V2 d'identifier explicitement le contenu réutilisable, tout contenu en conflit pour une même clé étant rejeté avant toute modification de la feuille de calcul
Changed
- Les images de rapport répétées partagent une charge utile immuable par clé de cache explicite ou correspondance exacte d'empreinte tout en conservant des ancres et transformations indépendantes
- XLSX et ODS enregistrent chaque charge utile d'image distincte une seule fois, réutilisent sa relation média entre les feuilles et restaurent les charges utiles partagées à la réouverture du classeur
- La réouverture XLSX restaure désormais les données SVG compagnes depuis les relations d'extension DrawingML et les associe à l'image matricielle de repli
Version 2.361.64
Added
TXLSReportImageResultpeut déclarer les dimensions en pixels et les DPI de la source, tandis que les requêtes et résultats d'images exposent des décalages cibles relatifs à l'ancre en EMUTXLSXImage.OffsetXEMUetOffsetYEMUpréservent le placement de l'image à l'intérieur d'une ancre à travers les cycles d'enregistrement et d'ouverture XLSX et ODS
Changed
- La liaison d'images V2 dérive la géométrie physique des en-têtes PNG, JPEG, GIF, BMP, EMF et WMF, applique le dimensionnement Natural, Contain, Cover ou Stretch et centre les images contenues sans décoder leurs pixels
- La géométrie matricielle est rejetée avant toute modification de la feuille de calcul lorsque les en-têtes sont tronqués, que les dimensions déclarées divergent, qu'un côté dépasse 100 000 pixels ou que la taille décodée totale dépasse 100 millions de pixels
Version 2.361.63
Added
IXLSReportImageDataProviderV2peut renvoyer des octets d'image ou des flux empruntés par l'appelant et transférés par le fournisseur, avec un contexte de classeur, feuille de calcul, cible, bande, table, ligne, ancre et annulationOnTransformImagepeut remplacer ou redimensionner une image avant la liaison, tandis que les bandes de plages et de tableaux Excel compilées exposent un instantané en lecture seule de chaque ligne de données réelle
Changed
- Les flux d'images V2 sont lus par blocs bornés avec une limite par défaut configurable de 64 MiB ; les flux à accès direct empruntés restaurent leur position et les flux transférés sont libérés exactement une fois
- Les charges utiles V2 rejettent les données vides, les signatures de format incompatibles, les dimensions incohérentes, les ancres non valides et les décalages hors grille avant de modifier la feuille de calcul
- Les bandes de plages et de tableaux Excel compilées lient les cibles d'images une fois par ligne générée à partir des colonnes liées matérialisées, sans analyser les cellules générées de la feuille de calcul
Version 2.361.62
Added
TXLSCompiledReportRunneretTXLSReportGeneratoracceptent désormais unIXLSReportImageProviderexistant avec des stratégies pour image manquante et cellule de directiveTXLSReportImageBinder.ApplyTargetlie une directive d'image précompilée sans analyser les cellules sans rapport de la feuille de calcul
Changed
- Les cellules exactes
{{#image Key}}se compilent en cibles de rapport typées, restent inchangées lorsqu'aucun fournisseur n'est configuré et réutilisent leur clé et coordonnées compilées entre les sessions de l'exécuteur
Version 2.361.61
Added
TXLSCompiledReportRunnerexpose désormais des événements couplés de génération de classeur et de feuille de calcul avec identité stable de feuille, coordonnées d'origine et courantes, données de rapport en lecture seule, comptages de cibles, annulation et détails des échecsTXLSReportGeneratorexécute des modèles de classeur, de fichier, de flux ou de fichier chiffré via des événements de cycle de vie de lecture de modèle et de génération, avec modification sur place ou par clone atomique au choix
Changed
- La génération de rapport fige l'ensemble de feuilles d'origine, recompile après des changements de structure pilotés par rappel, rejette la modification concurrente d'un même classeur, apparie les événements d'entrée lors des annulations et échecs et préserve la première exception
- Les flux de rapport restent la propriété de l'appelant, les flux de modèles à accès direct restaurent leur position, les flux en avant seule sont consommés par blocs bornés, et les destinations de flux, de fichier et de fichier chiffré ne changent qu'après une exécution réussie
- Les rapports compilés sans gestionnaires de cycle de vie conservent la boucle directe de cibles, sans analyses de feuilles, contextes d'événements ni allocations de cycle de vie par cible
Version 2.361.60
Added
- Les classeurs XLSX exposent désormais
HasWebAddinTaskPanes,WebAddinTaskPaneCountetRemoveWebAddinTaskPanespour une inspection et une suppression exactes des volets de tâches à la racine du package
Changed
- La suppression des volets de tâches des compléments web valide désormais un graphe de relations interne borné avant modification, préserve les parties de package partagées et sans rapport, supprime les descendants exclusifs et les parties de relations possédées, reconstruit les types de contenu, empêche la résurrection par copie source et est idempotente
- Les classeurs XLS classiques et ODS signalent la suppression des volets de tâches des compléments web comme non prise en charge, sans analyser le contenu du package
Version 2.361.59
Added
- Les classeurs XLS classiques et XLSX exposent désormais des propriétés
SaveExternalLinkValuesetUpdateLinkshomologues pour la persistance du cache et la préférence de mise à jour des liaisons déclarée dans le fichier
Changed
- La désactivation des valeurs de liaisons externes en cache omet désormais uniquement les enregistrements classiques
XCT/CRNou le contenusheetDataSetXLSX, tout en conservant les définitions de liaisons, les noms définis, les relations, le XML inconnu et les caches en mémoire - Les stratégies de liaisons externes effectuent désormais un aller-retour sans perte des valeurs source réservées jusqu'à leur édition, se convertissent entre XLS et XLSX, préservent les parties de package compressées inchangées et ne déclenchent jamais d'accès réseau ou à des fichiers externes
Version 2.361.58
Added
TXLSHTMLExportetTXLSXHtmlExportSessionexposent désormais l'instantané immuableRenderGeometryutilisé par l'opération HTML en cours
Changed
- Les exportateurs HTML XLS classiques et XLSX convertissent désormais les largeurs de caractères Excel en longueurs CSS fixes via une géométrie de largeur de chiffre maximale propre au moteur, au lieu de facteurs de conversion codés en dur ou d'unités de caractères CSS
- Les exportations HTML de classeur, de feuille de calcul, de plage et multi-feuilles incrémentales capturent un calibrage local à l'opération avec un cache de métriques borné et ne modifient jamais les hauteurs de lignes ni les largeurs de colonnes stockées
Version 2.361.57
Changed
- Les opérations PDF, SVG, bitmap, aperçu avant impression et visionneuse de classeurs capturent désormais des instantanés de géométrie de rendu immuables distincts, avec des caches de métriques bornés conscients du moteur
- Le rendu de pages partagé et la restitution SVG utilisent désormais une mesure de polices locale à l'opération au lieu d'un état GDI bitmap et de liste de chaînes global au processus, tout en préservant les hauteurs de lignes et largeurs de colonnes stockées
Version 2.361.56
Changed
- L'AutoFit XLS classique et XLSX capture désormais un service de géométrie de rendu de classeur immuable par opération, incluant la mesure de texte calibrée, la restitution, l'interligne, les marges de cellules et les polices visibles XLSX réelles
- La pagination capture désormais une géométrie locale au classeur pour chaque construction, supprime l'état global au processus de police normale et de largeur de chiffre maximale, et applique des largeurs de colonnes implicites calibrées sans modifier les hauteurs de lignes ni les largeurs de colonnes stockées
Version 2.361.55
Added
- Les classeurs XLS classiques et XLSX créent désormais des services immuables de géométrie et de mesure de polices propres à l'opération, avec des caches locaux bornés, des conversions de largeurs partagées et aucun cache AutoFit de DPI ou de largeur de base global au processus
Version 2.361.54
Added
- Les classeurs XLS classiques et XLSX exposent désormais des valeurs
TXLSRenderCalibrationvalidées, plus des instantanésCaptureRenderCalibrationindépendants et des valeurs par défautResetRenderCalibrationpour les opérations de rendu futures
Version 2.361.53
Added
- Le chargement XLSX signale désormais
xlsDiagnosticPrinterSettingsRelationshipInvalidlorsqu'une relation de paramètres d'impression d'une feuille de calcul est manquante, de type erroné ou pendante
Changed
SaveXLSWorkbookAsXLSXetSaveXLSXWorkbookAsXLStransportent désormais indépendamment des champs de mise en page typés et des octets opaques de pilote d'impression, les champs standard ayant priorité sur les valeurs par défaut privées dupliquées
Fixed
- Le chargement XLSX ne lie plus une partie de paramètres d'impression sans rapport lorsque la relation nommée par
pageSetupest non valide - La conversion XLSX vers BIFF8 rejette désormais les paramètres d'impression surdimensionnés ou non représentables avant d'écrire le moindre octet de destination
Version 2.361.52
Added
- Les feuilles de calcul XLS classiques et XLSX exposent désormais des propriétés
PrinterDriverDataetHasPrinterDriverDataisolées lors des copies, plusClearPrinterDriverDatapour un contrôle direct des charges utiles opaques de pilote d'impression
Fixed
- L'effacement des données de pilote d'impression XLSX supprime désormais sa relation de feuille de calcul et sa partie binaire du package, même lorsque la préservation des parties non prises en charge est activée
Version 2.361.51
Changed
- Le chargement et l'enregistrement XLSX préservent désormais les paramètres d'impression binaires de chaque feuille de calcul via la relation
pageSetup, la déclaration de type de contenu et la partie de packageprinterSettingsN.bin - Les paramètres d'impression survivent aux copies de feuilles au sein d'un même classeur et entre classeurs avec une possession indépendante à l'octet près, tandis que les parties sources inchangées peuvent conserver leur charge utile compressée d'origine
Version 2.361.50
Changed
- Le chargement et l'enregistrement XLS classiques préservent désormais la charge utile complète du pilote d'impression BIFF
PLSavec chaque segmentContinuequi suit immédiatement - Les charges utiles de pilote d'impression sont copiées en profondeur avec les feuilles de calcul, émises avant
Setupen segments exactement de taille BIFF, et rejetées lorsqu'elles sont structurellement incomplètes ou plus grandes que la limite de sécurité de 1 MiB
Version 2.361.49
Added
- La mise en page XLS classique expose désormais les propriétés en lecture seule
HasSetupRecordetPrinterSettingsInitializedafin que les appelants puissent distinguer des paramètres d'impression manquants ou non initialisés de valeurs définies
Changed
- L'enregistrement d'une feuille de calcul classique intacte préserve désormais l'absence d'enregistrement BIFF
Setupet conserve chaque octet d'un enregistrement existant de 34 octets, y compris les bits d'indicateurs réservés et non modélisés - Les accesseurs en écriture de mise en page ne créent désormais un enregistrement
Setupmanquant qu'en cas de besoin et initialisent les champs dépendant de l'imprimante ou d'orientation selon la propriété concernée
Version 2.361.48
Added
SaveXLSXWorkbookAsXLSconvertit désormais un classeur de modèle XLSX en BIFF8 via des surcharges fichier et flux, en préservant les valeurs chargées, les formules, les styles de base, les plages fusionnées, les dimensions de lignes et de colonnes, le mode de date du classeur et l'état de la feuille active
Changed
- La conversion XLSX vers XLS construit une palette déterministe de 56 couleurs avant d'écrire les styles, préserve les emplacements indexés déjà utilisés et applique une quantification OKLab pondérée lorsque les couleurs directes dépassent la capacité BIFF8
- Le chemin de conversion parcourt les cellules éparses ou compactées chargées sans matérialiser la grille source, rejette les coordonnées hors des limites BIFF8 avant de toucher la destination et est désormais disponible dans les exemples Delphi et C++Builder ConversionWorkbench
Version 2.361.47
Added
- Les classeurs XLS classiques et XLSX exposent désormais des méthodes
ApplyBiffPalettePlanhomologues qui valident et appliquent atomiquement un plan de palette courant à 56 emplacements - Les classeurs classiques exposent désormais
BiffPaletteSavePolicy, avec une option explicite d'optimisation BIFF8 et une valeur par défaut qui préserve la sortie de palette historique
Changed
- L'application d'un plan de palette valide désormais la génération source, le hachage source, toutes les identités et couleurs d'emplacements, les comptages agrégés, les verrous de préservation, les indicateurs de changement et les cibles opaques avant la première modification, puis reconstruit une seule fois le comparateur OKLab en cache
- Les enregistrements BIFF8 optimisés laissent la palette appliquée dans le classeur après un succès, mais restaurent les 56 couleurs source et la génération d'origine si la sortie échoue ou est annulée ; les chemins de sortie BIFF5 et non BIFF restent inchangés
Version 2.361.46
Added
- Les classeurs XLS classiques et XLSX exposent désormais des méthodes
BuildBiffPalettePlanhomologues qui renvoient un plan sans modification à 56 emplacements avec identité de la palette source, emplacements verrouillés, couleurs proposées, mappages true color agrégés, couverture exacte et statistiques d'erreur perceptuelle
Changed
- La planification de palette BIFF préserve désormais les consommateurs indexés et les couleurs exactes existantes avant d'attribuer les emplacements libres, puis n'utilise un clustering OKLab déterministe pondéré par fréquence que lorsque les couleurs directes et de thème résolues dépassent la capacité restante
- La construction d'un plan de palette lit les métadonnées de styles et de formats conditionnels stockées sans changer les entrées de palette, les comptages de couleurs personnalisées, les cellules, le comportement d'enregistrement ni le stockage épars
Version 2.361.45
Added
- Les classeurs XLS classiques et XLSX exposent désormais des méthodes
ScanIndexedColorUsagehomologues qui renvoient un inventaire déterministe à 56 emplacements avec index publics et physiques, valeurs ARGB normalisées, comptages de définitions et de références, types de consommateurs et verrous de préservation
Changed
- L'analyse d'utilisation des couleurs indexées couvre désormais les pools de styles du classeur, les références de cellules éparses, les styles nommés, les superpositions de plages, les quadrillages des feuilles de calcul, les formes, les commentaires, le texte enrichi, les polices de graphiques, les styles différentiels, les barres de données et les échelles de couleurs, sans matérialiser les cellules inutilisées ni changer l'état du classeur
- Les couleurs de formats conditionnels indexées effectuent désormais un aller-retour à travers les styles différentiels classiques BIFF et OpenXML, les barres de données et les échelles de couleurs, y compris les enregistrements en flux qui émettent les identifiants de styles différentiels avant les parties de feuilles de calcul
Version 2.361.44
Added
- Les classeurs XLS classiques et XLSX exposent désormais des méthodes
NearestIndexedColorhomologues qui renvoient l'index de palette publique le plus proche, l'emplacement physique, la valeur ARGB normalisée, la distance perceptuelle au carré et le statut de correspondance exacte
Changed
- La correspondance de couleur indexée la plus proche partage désormais une même implémentation OKLab en cache entre les deux moteurs de classeurs et le gestionnaire de couleurs hérité, avec une résolution d'égalité déterministe par index le plus bas et des mises à jour de cache limitées aux mutations effectives de palette
- Les requêtes de couleur la plus proche ne parcourent que les 56 entrées physiques de la palette BIFF, rejettent les entrées partiellement transparentes et ne modifient jamais la palette ni l'état du classeur
Version 2.361.43
Added
- Les classeurs XLS classiques et XLSX exposent désormais des surcharges
ResolveIndexedColorhomologues qui classifient les index de couleurs publics, les valeurs BIFFicvet les couleurs indexées OOXML tout en renvoyant des métadonnées de palette, automatiques, système ou non valides - Le résultat typé de couleur indexée indique l'index brut, l'emplacement de palette, le rôle de couleur système, la valeur ARGB normalisée et l'existence ou non d'une couleur concrète résolue
Changed
- Les jetons de couleurs automatiques et système n'interrogent plus implicitement le bureau Windows courant ; les appelants peuvent fournir un résolveur explicite lorsqu'une couleur concrète de l'environnement est requise
- Les couleurs système de thème utilisent désormais leur valeur RVB de repli stockée, ce qui rend le chargement, l'enregistrement et le traitement headless déterministes d'une machine à l'autre
Fixed
- Les valeurs de couleurs indexées OOXML non valides ne se résolvent plus en noir opaque, et les valeurs par défaut du gestionnaire de couleurs hérité utilisent désormais les valeurs exactes de la palette à 128 canaux
Version 2.361.42
Added
TXLSWorksheetetTXLSXWorksheetexposent désormais des méthodes homologuesTryGetOutlineNode,SetOutlineNodeCollapsedetSetOutlineDisplayLevelpour les nœuds de synthèse de lignes ou de colonnes indexés à partir de un
Changed
- Les requêtes et mises à jour de plans de feuilles de calcul adaptent désormais les métadonnées éparses du moteur à des plans compressés, préservent l'état des enfants imbriqués par défaut et appliquent les changements masqué et réduit sans parcourir les coordonnées inutilisées de la feuille
- Les groupes de lignes et de colonnes OpenDocument préservent désormais leur état d'affichage imbriqué natif à travers les changements directs de métadonnées, les éditions structurelles, les aller-retours ODS et la conversion en marqueurs de nœuds de synthèse XLSX
TXLSXWorksheet.ToggleRowGroupedetToggleColGroupedrestent disponibles comme wrappers de compatibilité sensibles à la direction autour de l'API de nœuds de synthèse
Version 2.361.41
Added
TXLSOutlineGeometrypeut désormais construire des instancesTXLSOutlineMutationPlancompressées pour un repli ou déploiement idempotent de nœuds et des changements de niveau d'affichage de plan indexés à partir de un- Les plans de mutation de plan exposent des modes enfants explicites de préservation, de repli et de déploiement tout en gardant les marqueurs de repli imbriqués indépendants par défaut
Changed
- Le déploiement d'un nœud de plan imbriqué tient désormais compte des ancêtres réduits et des descendants réduits pour dériver la visibilité, et la découverte de nœuds en masse ne parcourt que les étendues matérialisées en une passe linéaire à pile monotone
Version 2.361.40
Added
- La nouvelle unité
lxOutlineindépendante du moteur construit la géométrie de plans de lignes ou de colonnes à partir d'étendues éparses triées et découvre les nœuds de synthèse avant ou après, les plages de détails imbriquées, les niveaux de synthèse, l'état masqué et les marqueurs de repli explicites sans parcourir les coordonnées inutilisées de la feuille
Version 2.361.39
Added
- Les métadonnées de colonnes XLS classiques exposent désormais le marqueur de repli de plan indépendant via
TXLSColumnInfo.CollapsedetTXLSColumnInfoList.Collapsed
Fixed
- Les marqueurs de repli de plan de colonnes XLS classiques survivent désormais aux aller-retours BIFF, aux copies de format de colonnes, aux copies de feuilles de calcul et à la fusion d'enregistrements adjacents, tandis que la largeur définie et les indicateurs d'ajustement optimal et phonétique restent intacts
Version 2.361.38
Fixed
- Les colonnes de synthèse de plan XLS classiques préservent désormais leur position logique à gauche ou à droite à travers les vues de feuilles de calcul de gauche à droite et de droite à gauche au lieu d'écrire le bit de direction
WSBOOLopposé
Version 2.361.37
Added
- Les feuilles de calcul XLS classiques et XLSX exposent désormais
EvaluateFormulaAtpour une évaluation de formules A1 ou R1C1 en lecture seule dans un contexte de cellule cible explicite IXLSFormulaEvaluationTemplatecompile une fois une ancre de formule immuable et l'évalue de façon répétée dans d'autres cellules viaEvaluateAtouEvaluateAtWithOptions- Les options d'évaluation de formules incluent désormais des limites de longueur de formule, d'étapes d'éléments de syntaxe, de profondeur de récursion et d'octets de tableaux générés, l'épuisement étant signalé par
xlfeResourceLimit
Changed
- L'évaluation à usage unique et l'évaluation réutilisable partagent désormais les noms locaux à la feuille, les références structurées, les dépendances de formules non mises en cache, les racines de tableaux, l'état volatil, l'annulation et les références externes explicitement autorisées, sans écrire l'état du classeur
- Les méthodes
Calculateexistantes du classeur et de la feuille de calcul restent des façades de compatibilité par-dessus l'évaluateur contextuel typé
Fixed
- L'évaluation contextuelle préserve désormais les variantes d'erreurs de formules et distingue les échecs d'analyse, de fonction non prise en charge, de référence circulaire, de référence externe, d'annulation, de durée de vie de feuille et de limite de ressources
- Les modèles R1C1 réutilisables traduisent désormais les décalages relatifs de lignes et de colonnes depuis leur ancre de compilation lorsqu'ils sont évalués dans une autre cellule cible
Version 2.361.36
Added
ConvertExternalDefinedNamesToRefErrorsest désormais disponible sur les classeurs XLS classiques et XLSX pour détacher les noms définis confirmés de classeurs externes sans réécrire les formules de cellules ordinaires- Les définitions malformées ou non prises en charge qui sont ignorées sont signalées via
xlsDiagnosticDefinedNameConversionSkipped
Changed
- La conversion remplace atomiquement les définitions sélectionnées par des
#REF!natifs tout en conservant la portée de classeur ou de feuille, la visibilité, les commentaires, les indicateurs de macro et intégrés, les attributs inconnus et les parties de liaisons externes
Fixed
- La syntaxe d'emplacement de noms définis externes telle que
=[1]!RemoteNamese résout désormais via la liaison de classeur déclarée, et les formules dépendantes conservent la valeur d'erreur Excel résultante lors du recalcul
Version 2.361.35
Added
TXLSWorkbookWorkspace.Recalculateévalue désormais les nœuds de formules XLS classiques, XLSX et ODS enregistrés en une seule passe topologique inter-classeurs avec détection des composantes fortement connexes et propagation de génération saleTXLSWorkspaceRecalcResultindique la réutilisation du graphe, les nœuds sales et évalués, les cycles, les dépendants bloqués, les invalidations, ainsi que les succès et échecs du cache d'exécution
Changed
- L'espace de travail conserve son graphe de dépendances jusqu'à un changement d'enregistrements ou de topologie de formules, tandis que les éditions de valeurs ordinaires ne marquent comme sales que les nœuds du classeur concernés et leurs dépendants transitifs
- Les lectures répétées de cellules externes en une passe de calcul partagent un cache exact de classeur, feuille, ligne et colonne, invalidé avant chaque mise à jour planifiée de formule
Fixed
- Les liaisons bidirectionnelles entre classeurs ne sont plus traitées comme circulaires sauf si le graphe des cellules de formules contient un vrai cycle ; les membres du cycle et leurs dépendants bloqués sont invalidés au lieu de renvoyer des valeurs en cache périmées
- Une session d'espace de travail en échec ou invalidée par un cycle conserve désormais l'état sale local au moteur, si bien qu'un recalcul ultérieur du classeur retente les formules inachevées au lieu de considérer une passe partielle comme terminée
Version 2.361.34
Added
TXLSWorkbookWorkspace.BuildDependencyGraphcrée désormais un graphe de dépendances unique à travers les classeurs XLS classiques, XLSX et ODS enregistrés, en conservant les identités de classeurs, feuilles, cellules, plages rectangulaires et noms définis à portéeTXLSWorkspaceDepGraphexpose des requêtes de nœuds de formules, de références, d'arêtes, de dépendants de cellules et de dépendants de noms définis, plus des diagnostics de vérification de candidats pour la vérification des performances
Changed
- Les grandes plages de formules restent des intervalles compacts au lieu de s'étendre en cellules individuelles, tandis que les arbres d'intervalles de lignes élaguent autant la recherche de dépendants que la construction d'arêtes sans matérialiser les valeurs compactées des feuilles
- Les noms définis locaux conservent à la fois leur dépendance symbolique et leurs dépendances de cellules ou plages résolues statiquement, tandis que les noms définis externes préservent leur emplacement de classeur externe déclaré, leur nom et leur portée de feuille
Fixed
- Les noms définis ordinaires ne sont plus effacés pendant que l'analyseur de formules recherche un préfixe facultatif de classeur externe
Version 2.361.33
Added
TXLSWorkbookWorkspace.OnLoadWorkbookpeut désormais demander un classeur externe via une stratégie contrôlée par l'appelant, au plus une fois par identité normalisée, tandis queResolveWithLoadersignale des diagnostics typés d'introuvable, d'erreur, de cycle et de limite de ressourcesMaxLoadDepth,MaxWorkbookCountetResetLoadAttemptsfournissent des bornes explicites et un contrôle de nouvelle tentative pour le chargement de classeurs externes
Changed
- Les requêtes concurrentes de classeurs externes partagent désormais un seul résultat de chargement en cours, et la réentrée imbriquée est rejetée sans attendre dans un cycle de chargement inter-threads ; l'espace de travail par défaut n'effectue toujours aucun accès au système de fichiers ni au réseau
Version 2.361.32
Added
- Les classeurs XLS classiques exposent désormais
CreateWorkspaceWorkbook,RegisterExternalWorkbook,UnregisterExternalWorkbooketExternalWorkspace, permettant aux classeurs classiques, XLSX et ODS de fournir des valeurs de formules externes via un espace de travail unique indépendant du moteur - Les caches de liaisons externes XLS classiques décodent désormais les valeurs numériques, chaînes, booléennes, d'erreur et vides des enregistrements typés XCT et CRN dans une recherche éparsée à temps constant, sans matérialiser de feuilles de calcul
Changed
- L'évaluation de formules externes résout désormais les noms de feuilles avant les replis positionnels et lit de manière cohérente d'abord un classeur actif explicitement enregistré, puis un cache de fichier typé, puis renvoie
#REF!, les enregistrements détruits étant révoqués sans accès implicite aux fichiers ou au réseau - Les identités de classeurs externes entre guillemets peuvent contenir des schémas URI, des lettres de lecteurs Windows et d'autres deux-points sans être confondues avec un séparateur de plages de feuilles tridimensionnelles, si bien que les IRI de sources externes ODF restent intactes lors de l'importation de formules
Version 2.361.31
Added
TXLSWorkbookWorkspace,IXLSWorkspaceWorkbooketTXLSXWorkbook.CreateWorkspaceWorkbookfournissent une fondation thread-safe d'identité et d'enregistrement de classeurs externes avec statut de résolution explicite, suivi de génération et adaptateurs de classeurs révocables
Changed
TXLSXWorkbook.RegisterExternalWorkbookpréserve désormais les chemins et extensions, résout les cibles de relations relatives par rapport au classeur propriétaire, rejette les alias ambigus ou les cibles de même nom de base au lieu d'en choisir un silencieusement, révoque les enregistrements lorsqu'un classeur cible est détruit et conserve un repli de cache de liaisons externes typé sans accès implicite aux fichiers ou au réseau
Version 2.361.30
Added
- Les vues de classeurs en lecture seule classiques et XLSX peuvent désormais évaluer des formules à la demande via
xlsvEvaluateFormulaset signaler le résultat indépendant viaFormulaEvaluationsans remplacer les caches de formules stockés
Changed
- Les vues en lecture seule concurrentes isolent désormais les indicateurs de récursion de formules, les résultats scalaires, les formules XLSX compilées et les matrices de tableaux, tandis que les formules externes XLSX n'utilisent que des caches de liaisons externes locaux au fichier et ne déréférencent jamais d'enregistrements de classeurs actifs
Fixed
- Les valeurs en cache de liaisons externes XLSX résolvent désormais l'index de feuille à base un porté par les enregistrements XTI externes vers la bonne entrée de feuille en cache à base zéro
Version 2.361.29
Added
- Les classeurs XLSX exposent désormais
IXLSXWorkbookOwner.CreateReadOnlyViewavec feuilles actives propres à la vue, instantanés de cellules matérialisées et compactées par valeur, résultats de formules en cache, texte de formules sur adhésion, ordre de libération sûr du propriétaire ou de la vue et exclusion d'écriture à échec immédiat
Changed
- Les vues XLSX en lecture seule n'utilisent que des caches de formules externes stockés localement et ne déréférencent jamais d'enregistrements faibles de classeurs actifs
Version 2.361.28
Added
- Les classeurs classiques exposent désormais
CreateReadOnlyViewetIXLSReadOnlyWorkbookViewpour des vues à modèle partagé à temps constant avec feuilles actives indépendantes, instantanés de cellules par valeur, résultats de formules en cache, texte de formules sur adhésion, durée de vie du propriétaire à comptage de références et exclusion d'écriture à échec immédiat
Version 2.361.27
Added
- Les classeurs classiques, XLSX et ODS exposent désormais
CreateFormulaCacheReaderet l'interface partagéeIXLSFormulaCacheReaderpour une inspection de caches de formules indépendante du moteur avec invalidation sûre de durée de vie
Changed
- L'inspection de caches de formules partagées préserve désormais le résultat stocké indépendant de chaque membre, si bien qu'un suiveur sans valeur en cache signale une absence au lieu d'hériter de la valeur du membre racine
Version 2.361.26
Added
TXLSXWorkbook.TryGetCachedFormulaValuesignale désormais la présence, la provenance et le type de valeur des caches de formules XLSX et ODS, sans calcul ni modification du classeur
Fixed
- Les caches de formules XLSX et ODS préservent désormais les résultats manquants et vides explicites, les chaînes vides, les booléens faux, les zéros numériques, les erreurs typées et les dates explicites à travers l'enregistrement et la réouverture, tandis que les formules modifiées ne sérialisent plus de résultats en cache périmés
Version 2.361.25
Added
- Les classeurs classiques exposent désormais
TryGetCachedFormulaValueavec présence de cache, provenance et type de valeur explicites, permettant de lire un résultat de formule stocké sans calcul, rappels de fonctions utilisateur, décompilation de jetons ni modification du classeur
Fixed
- Les caches booléens et d'erreurs de formules XLS classiques utilisent désormais l'octet de charge utile BIFF spécifié dans les formules ordinaires et partagées, et les résultats d'erreurs chargés restent des valeurs typées
varErrorà travers l'enregistrement et la réouverture
Version 2.361.24
Added
- Les classeurs classiques et XLSX fournissent désormais une surcharge
CreateLoadedCellCursor(Boolean)qui peut inclure les cellules vides stockées à style indépendant comme instantanésxlckBlank
Changed
- La traversée des vides sur adhésion préserve l'ordre des feuilles, lignes et colonnes, maintient le stockage XLSX compacté compressé et exclut les coordonnées à format hérité ainsi que les espaces réservés Empty et Null sans style
Version 2.361.23
Added
- Les classeurs XLSX exposent désormais
TXLSXWorkbook.CreateLoadedCellCursorpour une traversée à état constant en ordre ligne-majeure des cellules de valeurs et de formules stockées à travers les feuilles de calcul TXLSLoadedCellKindinclut désormaisxlckErrorafin que les valeurs d'erreurs XLSX stockées conservent leur type de valeur distinct
Changed
- Les curseurs XLSX parcourent directement les blocs de lignes épars matérialisés ou le stockage compacté, sans trier les cellules ni matérialiser les valeurs compactées, et les instantanés de formules renvoient la valeur en cache actuellement stockée sans recalcul
- Les changements de topologie à l'échelle du classeur et la libération du classeur invalident les curseurs XLSX via un bail de durée de vie partagé, tandis que les éditions du contenu de cellules existantes maintiennent la traversée valide et les instantanés capturés possédés
Version 2.361.22
Added
- Les classeurs classiques exposent désormais
IXLSWorkbook.CreateLoadedCellCursorpour une traversée à état constant en ordre ligne-majeure des cellules de valeurs et de formules stockées à travers les feuilles de calcul TXLSLoadedCellSnapshotrenvoie une identité de feuille possédée, des coordonnées à base un, le style, le type de valeur, la valeur et le texte de formule, sans exposer les objets internes de cellules
Changed
- Les curseurs de cellules chargées échouent immédiatement après des changements de topologie de cellules, de collection de feuilles ou de remplacement du modèle de classeur, tandis que les éditions du contenu de cellules existantes maintiennent la traversée valide et les instantanés capturés antérieurement inchangés
Version 2.361.21
Added
- Les magasins de cellules et collections de feuilles XLS classiques et XLSX exposent désormais des compteurs de génération structurels indépendants pour une traversée sûre de longue durée
XlsValidateStructureGenerationetEXLSLoadedCellCursorInvalidatedfournissent un contrat unique de validation à échec immédiat pour les lecteurs de cellules chargées
Changed
- La création, la suppression, l'effacement et le réordonnancement de coordonnées de cellules, les transitions de stockage compacté, les reconstructions d'index et les opérations d'ajout, suppression ou déplacement de feuilles font avancer la génération concernée, tandis que les éditions du contenu de cellules existantes, le renommage ou l'activation de feuilles et les mutations sans effet la maintiennent stable
Version 2.361.20
Added
TXLSForwardReaderaccepte désormais une entrée ODS via la même surface de rappels que XLS, XLSX, CSV et TSVPeakRowBufferedBytesetSheetPassesStartedexposent l'ensemble de travail maximal de lignes logiques du backend de lignes partagé et le nombre de passes de feuilles réussies
Changed
TXLSForwardReaderadapte désormaisTXLSRowCursorpour chaque format pris en charge, en partageant le comportement de bornes de lignes, de projection de colonnes, d'état de formules, de texte enrichi, de mot de passe, d'enregistrements ignorés et de position de flux au lieu de maintenir des chemins d'analyse séparés- Les index de feuilles du lecteur en avant sont systématiquement à base un, et les feuilles de calcul ignorées par
OnSheetne sont ni ouvertes ni décompressées
Version 2.361.19
Added
TXLSRowCursorexpose désormais des états explicites fermé, avant-premier, actif, fin de fichier, annulé et en défaut, plus une méthodeCancelidempotente qui libère le flux de la feuille active sans fermer la sourceCurrentRowViewfournit une vue empruntée de la ligne courante vérifiée par génération, sans dupliquer son tableau de cellules ; l'avancement, la sélection d'une feuille, l'annulation, la fermeture ou la destruction du curseur invalide les vues antérieures avecEXLSRowCursorViewInvalidated- Les ouvertures de flux acceptent désormais
xsoBorrowedouxsoOwned, le transfert de propriété n'intervenant qu'après une ouverture réussie, etPeakRowBufferedBytesindique le tampon maximal estimé de lignes logiques depuis la dernière ouverture
Changed
- Les échecs de parties de feuilles et de démarrage de passe préservent désormais leur exception de lecture d'origine et placent le curseur dans l'état en défaut au lieu d'apparaître comme une annulation ou une fin de fichier normale ; la sélection explicite d'une feuille réinitialise la passe pour une nouvelle tentative
Version 2.361.18
Added
TXLSDirectCelletTXLSRowCursorCellexposent désormaisHasFormulaetFormulaTextAvailable, distinguant les valeurs simples, les formules à texte disponible et les formules dont le texte est supprimé ou indisponibleTXLSDirectReader,TXLSForwardReaderetTXLSRowCursorfournissent désormaisIncludeFormulaText; sa désactivation préserve les valeurs en cache, les coordonnées, les styles et la présence de formules tout en évitant l'accumulation de textes de formules dans les flux XLSX et ODS
Changed
- Les bornes de lignes et la projection de colonnes sont désormais poussées dans les backends XLS, XLSX, ODS, CSV et TSV avant l'allocation des valeurs, formules et textes enrichis ; les étendues de colonnes ODS répétées sautent directement entre les colonnes sélectionnées et les blocs de lignes répétés sont rognés à la plage demandée
- Les options de passe du curseur de lignes sont figées pendant qu'une passe de feuille est active et redeviennent modifiables après la fin de fichier, la sélection de feuille ou la fermeture, empêchant une passe de mélanger des paramètres de filtrage ou de décodage incompatibles
Version 2.361.17
Added
TXLSRowCursorouvre désormais des fichiers ODS et des flux appartenant à l'appelant, détecte automatiquement les packages ODS par leur mimetype oucontent.xml, précharge les noms de feuilles et diffuse la table sélectionnée viaFindFirstetFindNextsans matérialiser un classeur
Changed
- La traversée de lignes ODS développe paresseusement les lignes et colonnes répétées, omet les cellules couvertes comme valeurs indépendantes, préserve les vides stylés et les valeurs de formules en cache, restaure les positions des flux empruntés et signale les comptages de répétition invalides ou limités par la grille via
OnSkippedRecord
Version 2.361.16
Added
TXLSRowCursordiffuse désormais des fichiers ou flux CSV et TSV appartenant à l'appelant, avec détection des BOM UTF-8 et UTF-16, enregistrements cités multilignes, guillemets échappés, détection des délimiteurs virgule, point-virgule, tabulation ou barre verticale, remplacement facultatif du délimiteur et reconnaissance facultative des types nombre, date ISO, booléen et erreur
Changed
TXLSForwardReaderetTXLSRowCursorpartagent désormais un backend de lignes de texte pausable, en préservant des résultats de rappels et de tirage identiques tout en libérant les charges utiles Variant, formules et textes enrichis de la ligne précédente avant d'avancer
Version 2.361.15
Added
TXLSRowCursorouvre désormais des classeurs.xlsclassiques depuis des fichiers ou flux, détecte automatiquement les conteneurs composés BIFF et renvoie les résultats de formules numériques ou chaînes en cache plus les cellulesBlanketMulBlankstockées, en ne retenant que la ligne logique courante
Changed
- Les surcharges
Opendu curseur de lignes acceptent unTXLSForwardFormatfacultatif ; les ouvertures de fichiers possèdent leur flux BIFF interne, les ouvertures de flux empruntent le flux de l'appelant et restaurent sa position initiale à la fermeture viaClose, et les passesFindFirstrépétées se positionnent directement sur la feuille sélectionnée
Version 2.361.14
Added
- Le calcul de formules prend désormais en charge
ISFORMULApour les cellules individuelles, les références inter-feuilles et les plages rectangulaires, en renvoyant un tableau booléen de même forme pour les entrées de plage sans évaluer les formules référencées
Changed
- Les vérifications de présence de formules distinguent les valeurs ordinaires et les vides, les membres de formules partagées, les membres de formules matricielles classiques et XLSX, les ancres de tableaux dynamiques et les enfants de dispersion dynamique ; les tableaux générés sont bornés par
FormulaArrayMemoryLimit - XLSX stocke
ISFORMULAavec le préfixe_xlfn., ODS émet l'orthographe OpenFormula standard, et les enregistrements XLS classiques rejettent la fonction future non prise en charge sans valider un flux partiel
Fixed
- L'analyse de textes de formules reconnaît désormais les sept littéraux d'erreurs Excel standard, permettant à
#REF!de se propager à travers les fonctions à références seules, tandis qu'un nom défini qui se résout en scalaire signale#VALUE!au lieu de#NAME?
Version 2.361.13
Added
- Le calcul de formules prend désormais en charge
UNICHARsur toute la plage de scalaires Unicode, y compris les caractères supplémentaires et à usage privé, avec des erreurs compatibles Excel pour zéro, les valeurs hors plage, les points de code de substitution et les non-caractères Unicode - Le calcul de formules prend désormais en charge
BAHTTEXTavec texte en baths et satangs thaïlandais, arrondi médian à deux décimales en s'éloignant de zéro, valeurs négatives, groupes de millions répétés et entrées finies en notation scientifique
Changed
UNICHARetBAHTTEXTappliquent leur transformation aux plages et tableaux générés élément par élément en préservant les erreurs locales ; XLSX stockeUNICHARavec son préfixe de fonction future tandis queBAHTTEXTreste une fonction nue standard dans XLS comme XLSX
Version 2.361.12
Added
- Le calcul de formules prend désormais en charge
COMBINAetPERMUTATIONAavec arguments non négatifs tronqués, dépassement vérifié, diffusion de tableaux singleton et erreurs par élément, plus les matrices identitéMUNITsans plafond de dimension fixe - Les classeurs classiques et XLSX exposent
FormulaArrayMemoryLimitavec une valeur par défaut de 64 MiB pour borner les charges utiles de tableaux de formules générés, y compris les workers de recalcul XLSX parallèles
Changed
PERMUTATIONAutilise une exponentiation logarithmique,COMBINAraccourcit sa récurrence multiplicative, etMUNITalloue une matrice numérique compacte tout en n'écrivant que sa diagonale
Fixed
- Les tableaux de formules numériques ne sont plus classés comme des nombres scalaires, et les classeurs classiques nouvellement créés appliquent les limites de grille BIFF97 lors du calcul de formules avant leur premier enregistrement
Version 2.361.11
Added
- Le calcul de formules prend désormais en charge
COT,ACOT,COTH,ACOTH,CSC,CSCH,SECetSECHavec des règles de valeur principale, de domaine, de singularité, d'entrée finie et de grand argument sur des opérandes scalaires et de tableaux diffusés
Fixed
- Les fonctions de formules mappées préservent désormais les échecs scalaires directs comme valeurs d'erreur de tableur, utilisent des branches réciproques et de queue exponentielle résistantes à l'annulation pour les grandes entrées valides, écrivent les noms
_xlfn.exacts sans_xlws.et rejettent proprement les formules BIFF classiques non prises en charge
Version 2.361.10
Added
- Le calcul de formules prend désormais en charge
CEILING.MATHetFLOOR.MATHavec arguments d'incrément et de mode omis, incrément indépendant du signe, frontières précises de multiples décimaux et directions de mode spécifiées pour les nombres négatifs
Changed
- Les fonctions matricielles au niveau des formules peuvent désormais partager un mappeur d'éléments linéaire avec diffusion de lignes et colonnes singleton, instantanés de plages à usage unique et erreurs de conversion ou de calcul par élément ; XLSX utilise le préfixe
_xlfn.pour les deux nouvelles fonctions tandis que les enregistrements BIFF classiques rejettent proprement les formules non prises en charge
Version 2.361.9
Added
- Le calcul de formules prend désormais en charge
SORTBYavec tri stable multi-clés de lignes ou de colonnes, directions croissante ou décroissante indépendantes, valeurs par défaut de direction omise, clés de plages ou de tableaux générés, et instantanés uniques de la source et des clés suivis d'un tri en O(n log n)
Fixed
- Les enregistrements BIFF classiques échouent désormais proprement lorsqu'une formule ne peut être représentée au lieu de signaler un succès après le rejet d'un identifiant interne de fonction future, tandis que XLSX écrit
SORTBYavec_xlfn.sans jamais ajouter_xlws.
Version 2.361.8
Changed
- Le mode d'affichage des zéros des feuilles de calcul utilise désormais une seule décision sur valeur brute à travers les chemins visionneuse de classeurs, aperçu, impression, bitmap, EMF, SVG, PDF, HTML classique et HTML XLSX ; le zéro numérique réel est masqué avant la mise en forme des nombres et la mesure du texte, tandis que le mode d'affichage des formules conserve la priorité
Fixed
- Les vues de feuilles XLSX analysent, écrivent et copient désormais l'état d'affichage des zéros via un seul paramètre, gèrent correctement la base de dates 1904, préservent les visuels de formats conditionnels et la géométrie des liens hypertexte pour les cellules à zéro masqué, et laissent inchangées les valeurs stockées, le texte formaté public et les sorties CSV et ODS
Version 2.361.7
Changed
- Le mode d'affichage des formules des feuilles de calcul utilise désormais une seule décision de texte consciente des cellules protégées à travers les chemins visionneuse de classeurs, aperçu, impression, bitmap, EMF, SVG, PDF, HTML classique et HTML XLSX ; le texte des formules utilise l'alignement de texte sous l'alignement Standard, conserve l'alignement explicite et reçoit une largeur de mise en page effective doublée non persistante sans déborder dans les cellules voisines
Fixed
- Les vues de feuilles XLSX acceptent désormais aussi bien
showFormulas="1"queshowFormulas="true", préservent le paramètre lors des copies de feuilles au sein d'un même classeur et entre classeurs, et émettent l'étatsheetViewrequis sans changer les caches de formules, la sortie CSV, la persistance ODS ni le contrat public de valeurs formatées
Version 2.361.6
Changed
- Les formules de classeurs externes XLSX partagent désormais un seul analyseur lexical de préfixes de classeurs conscient de la grammaire à travers la conversion
OnlyExternal, les diagnostics de formules, la liaison de calcul, la copie inter-classeurs et la sérialisation des formules générées ; les emplacements de liaisons numériques sont canoniques, tandis que les références structurées, les littéraux de chaînes, les index malformés et les préfixes de noms de fichiers ambigus sont systématiquement rejetés TXLSXExternalLinkexpose désormais sonRelationshipIdsource, sonSourceSlotà base un et sonLinkKindtypé, si bien que les entrées de références externes de classeurs, DDE, OLE et non résolues peuvent être auditées sans déduire l'identité de l'ordre de collection ni du texte de cible
Fixed
- La modification d'une cible de liaison externe XLSX ou de sa liste de feuilles invalide désormais les liaisons de formules externes compilées par révision au lieu de réanalyser chaque cellule, et les parties de liaisons externes DDE ou OLE inchangées sans fichiers de relations restent préservées à l'octet près lors de l'enregistrement
Version 2.361.5
Fixed
- Les emplacements de formules de classeurs externes XLSX suivent désormais l'ordre du document des références externes de
workbook.xmlplutôt que l'ordre des fichiers de relations ; les relations manquantes, non résolues ou de type erroné conservent des emplacements vides afin que les références[N]ultérieures ne se décalent pas
Version 2.361.4
Changed
- Le gel de formules XLS classiques avec
OnlyExternalclassifie désormais les références BIFF préservées et ne convertit que les formules confirmées de classeurs externes, tandis que les références internes, de macros complémentaires, DDE/OLE et malformées restent des formules
Fixed
- Les résultats de formules commençant par un signe égal ou une apostrophe restent désormais des chaînes littérales lors de la conversion de valeurs, et les groupes de formules matricielles sont capturés en instantanés avant la libération de toute formule racine ou de dispersion
Version 2.361.3
Changed
- Les liaisons de prise en charge et les index de feuilles externes XLS classiques utilisent désormais une classification typée bornée pour les enregistrements interne, même feuille, macro complémentaire, classeur externe, DDE/OLE, inutilisé et inconnu
Fixed
- Les charges utiles de liaisons de prise en charge malformées sont préservées octet par octet au lieu d'être reconstruites comme un autre type de liaison, et les tables de feuilles externes tronquées ne lisent plus au-delà de leurs données d'enregistrement
Version 2.361.2
Fixed
- Les formules XLS classiques résolvent désormais l'index XTI à base zéro des jetons de noms définis externes vers la bonne entrée interne de feuille externe, y compris la première entrée
Version 2.361.1
Fixed
- Le rédacteur XLSX direct émet désormais l'indicateur de suppression SpreadsheetML de base
showDropDownuniquement lorsqueShowDropDownest désactivé, préservant la sémantique publique de l'API orientée affichage
Version 2.361.0
Added
- Les séries de graphiques gagnent
CategoriesMultiLevel: définissez-la pour émettre les catégories sous forme demultiLvlStrRef(étiquettes d'axes hiérarchiques) au lieu d'une référence de chaîne plate, avec récupération par aller-retour depuis les graphiques enregistrés
Version 2.360.0
Fixed
- Les commentaires de noms XLS classiques utilisent désormais le bon identifiant d'enregistrement
NAMECMT($0894) ; l'identifiant précédemment utilisé ($0019) appartient àWINDOWPROTECTselon les spécifications BIFF
Added
WindowProtectedsur les classeurs classiques fait effectuer un aller-retour à l'indicateur de protection de fenêtre du classeur via l'enregistrementWINDOWPROTECT($0019), les corps bruts capturés ayant priorité sauf si la propriété est explicitement écrite
Version 2.359.0
Added
- Les tables de données des graphiques exposent des commutateurs indépendants
showHorzBorder/showVertBorder/showOutlineau lieu de toujours dessiner chaque bordure - Les graphiques en courbes gagnent des lignes de chute (
HasDropLines) et les graphiques en barres empilées des lignes de séries (HasSeriesLines), tous deux avec aller-retour ; les séries peuvent être retirées individuellement de la légende viaLegendDeletedtout en restant tracées
Version 2.358.0
Added
- Les bandes de rapport gagnent des sémantiques fixe et jeu de données vide :
EmptyBandPolicyconserve, efface ou supprime les lignes du modèle lorsque le jeu de données est vide (plus aucun espace réservé non résolu laissé derrière),FixedBandécrit les copies sur les lignes en dessous sans rien insérer pour les bandes de formulaires en superposition, etDeleteLastRowréduit la copie finale afin que le contenu qui suit s'aligne sans trous (comportement X-range)
Version 2.357.0
Added
- L'exportation PDF peut incorporer des polices OpenType autonomes avec contours CFF via un flux OpenType
FontFile3et un descendantCIDFontType0; les modes automatique et complet retiennent le programme complet, tandis qu'un sous-ensemble requis indisponible échoue avant que la sortie ne soit validée OnGetFontDirectoriesfournit des répertoires séparés par des points-virgules pour une famille et un style de police demandés ; les arborescences acceptées sont parcourues récursivement une fois et indexées par métadonnées internes de polices pour une résolution de repli en cache
Changed
- Les polices incorporées portant des données GPOS OpenType ou de crénage héritées utilisent désormais des avances de glyphes positionnées pour le texte simple comme pour les écritures complexes, gardant la mesure, la restitution, l'alignement et le placement des glyphes PDF cohérents
Version 2.356.0
Added
- L'incorporation de polices PDF devient une stratégie configurable à quatre modes :
FontEmbeddingsélectionne le comportement historique automatique, le sous-ensemble requis, l'incorporation du programme complet ou les polices en mode table seule dont les programmes sont retirés tandis que le mappage CID et les tables ToUnicode survivent ; PDF/A rejette la sortie en mode table seule - L'événement
OnFontEmbedse déclenche une fois par police Unicode avant la résolution des métriques et mappages de glyphes, reçoit son nom et son chemin de fichier, et peut accepter un mode par police ou des octets de police de remplacement via le contrat expliciteHandled
Version 2.355.0
Added
- Le recalcul XLS classique utilise désormais un graphe de dépendances construit paresseusement, propage les changements d'entrées uniquement aux dépendants transitifs, recalcule les formules volatiles à chaque passe et évalue les formules dans l'ordre des dépendances au lieu de réanalyser tout le tas de cellules épars
- Les références circulaires dans XLS classique suivent désormais
EnableIteration,MaxIterationsetMaxIterationChange; les composantes fortement connexes isolent les cycles indépendants, les itèrent de façon déterministe, puis calculent les formules en aval - Les fichiers associés PDF/A-3 gagnent une surcharge
AddAttachmentdétaillée avec noms d'affichage Unicode, descriptions, dates de modification, noms MIME échappés, métadonnées de taille en octets et relations Source, Data, Alternative, Supplement ou Unspecified TXLSPDFWritercrée des documents PDF autonomes sans classeur, avec tailles de pages explicites, sortie multipages, rectangles, lignes, ellipses, texte stylé mesuré, transformations de coordonnées, rognage rectangulaire et contrôle de l'état graphique
Changed
- La désactivation de
UseFullPrecisionsur XLS classique arrondit désormais les résultats en cache des formules et tables de données What-If à la précision numérique affichée effective avant que les formules dépendantes ne les consomment, y compris les formats de pourcentage et l'arrondi médian en s'éloignant de zéro
Fixed
- Le recalcul de formules classique utilise désormais les coordonnées natives de cellules à base zéro, tient les échecs de calcul hors du cache des succès et préserve la propagation d'erreurs à travers les fonctions matricielles dépendantes
Version 2.354.0
Added
- Les axes de graphiques gagnent l'énumération de mode de croisement (
Crosses: autoZero / max / min, émise commecrosseslorsqu'aucunCrossesAtexplicite n'est défini) et les styles de graduations principales / secondaires par axe (in,out,cross), le tout avec aller-retour AutoTitleDeletedsur les graphiques remplace l'indicateur codé en dur de titre automatique et supprime le titre dérivé des séries lorsqu'il est défini
Version 2.353.0
Added
- Les séries de graphiques gagnent
Smooth/SmoothSetpour le rendu de courbes etMarkerFillColor/MarkerBorderColorpour des couleurs de marqueurs explicites ; les deux persistent à travers l'enregistrement et l'ouverture, et le moteur de rendu partagé dessine les segments lissés comme des courbes quadratiques et consomme les couleurs de marqueurs
Version 2.352.0
Added
- La mise en forme de l'espace graphique fait l'objet d'un aller-retour :
RoundedCorners, les couleurs explicites d'arrière-plan et de bordure du graphique et la couleur d'arrière-plan de la zone de tracé persistent à travers l'enregistrement et l'ouverture, et le moteur de rendu de graphiques partagé consomme les couleurs d'arrière-plan et de bordure au lieu de toujours dessiner du blanc sur gris - Les commutateurs de protection de graphique font l'objet d'un aller-retour derrière un maître unique :
ProtectionEnabledplusProtectedChartObjects,ProtectedDataEditing,ProtectedFormatting,ProtectedSelectionetProtectedUserInterfaceémettent et analysent l'élément OOXMLprotection
Version 2.351.0
Changed
- Les graphiques en barres et en colonnes du moteur de rendu de pagination partagé suivent désormais les options de disposition du groupe de tracé : GapWidth dimensionne le groupe, Overlap élargit les barres et rapproche les barres voisines, et les groupements empilés / empilés en pourcentage accumulent une barre de groupe complet par catégorie au lieu de dessiner les séries côte à côte
Version 2.350.0
Added
- La copie de plages entre classeurs remappe désormais chaque style de cellule par valeur dans les pools de polices, remplissages, bordures, formats numériques, alignements et protections du classeur de destination, si bien que
CopyRangeToetCloneRangeToentre deux classeurs ouverts conservent leur mise en forme indépendamment de l'ordre des pools - Les classeurs XLS classiques font effectuer un aller-retour aux propriétés de document intégrées numériques et de dates :
CreatedDate,LastSavedDate,RevisionNumberetEditTimeMinutespersistent via le flux OLE SummaryInformation, les valeurs nulles étant ignorées et un effacement complet les supprimant
Version 2.349.0
Added
- Les classeurs XLS classiques exposent l'état de protection de révision du classeur partagé derrière des propriétés structurées :
SharedRevisionProtectedetSharedRevisionPasswordHashfont l'objet d'un aller-retour, tandis que les corps d'enregistrements bruts capturés depuis des fichiers analysés ont toujours priorité sauf si les propriétés sont explicitement écrites - Prise en charge du chiffrement des rapports :
TXLSCompiledReportTemplate.CreateEncryptedouvre directement un modèle protégé par mot de passe, etRunToEncryptedFileexécute le rapport et écrit un résultat chiffré ECMA-376 en un seul appel
Version 2.348.0
Added
- Options de collage depuis le presse-papiers pour les deux moteurs :
PasteFromClipboardaccepte les modes valeurs seules (conserver les résultats en cache, ignorer formules, mises en forme et fusions) et insertion de lignes / insertion de colonnes qui décalent le contenu existant avant l'arrivée du bloc - Les lecteurs en avant signalent le contenu ignoré : le lecteur direct, le curseur de lignes et le lecteur en avant exposent
OnSkippedRecord, déclenché lorsqu'une référence de cellule malformée est ignorée ou qu'une analyse de feuille BIFF s'interrompt sur des enregistrements tronqués ou incompatibles
Version 2.347.0
Added
- Combinateurs de mise en forme de tables de rapport :
Filterdiffuse paresseusement les lignes correspondantes,Sorteffectue un tri stable multi-clés, etDistinctconserve la première ligne par tuple de clés - Adaptateurs de sources de données :
FromDataSetcapture en instantané unTDataSetouvert dans une table de rapport (les noms de champs deviennent des colonnes, la position du jeu de données est restaurée), etFromObjectsmappe les propriétés publiées de listes et tableaux d'objets arbitraires vers des colonnes - Bandes de rapport bidirectionnelles :
RunBidirectionallaisse chaque ligne maîtresse piloter ses propres colonnes depuis une table enfant liée, produisant des dispositions de colonnes en dents de scie où les lignes plus courtes laissent les clones supplémentaires vides PreprocessAndRunexécute un modèle deux fois : la première passe remplit les valeurs et exécute les directives structurelles afin que le modèle s'adapte aux données, la seconde passe recompile le classeur remodelé et remplit les espaces réservés restants
Version 2.346.0
Added
- Les espaces réservés de rapport acceptent une valeur par défaut :
{{name;fallback}}écrit le texte de repli lorsque la clé est manquante ou vide - Les expressions de rapport gagnent
dbvalue(table, row, field[, default])etdbcount(table)pour lire toute table de contexte de données enregistrée par ligne et colonne, plustonumber(text)pour la conversion chaîne vers nombre etref(rowOffset, colOffset)pour des références relatives qui suivent les copies de bandes ; les modèles, exécuteurs et bandes exposent une propriétéDataContext - Une cellule nue
{{=formula(...)}}écrit désormais une formule vivante dans la cellule au lieu d'un texte simple, et les autres expressions nues conservent leur type évalué (les nombres restent numériques) - Nouvelles directives structurelles de rapport :
{{#imgsize zoom=150}}redimensionne l'image ancrée à la cellule de directive,{{#comment text}}attache un commentaire de cellule,{{#html <b>bold</b>}}injecte un fragment dans le texte enrichi, et{{#sheetvisible Sheet false}}/{{#deletesheet Sheet}}contrôlent la visibilité et la suppression des feuilles de calcul
Version 2.345.0
Added
- Les classeurs XLSX gagnent une stratégie de recalcul à l'enregistrement :
RecalcBeforeSavesélectionne un comportement manuel (par défaut), recalcul si sale ou recalcul systématique lorsqu'un fichier est enregistré RecalcNeededindique si une cellule de formule ou une édition capturée est actuellement sale, etRecalcCellrecalcule le classeur et renvoie la valeur fraîchement calculée d'une cellule unique par feuille, ligne et colonne
Version 2.344.0
Added
- Les modèles de rapport prennent en charge des directives structurelles dans le texte des cellules :
{{#delete A2}}efface la plage nommée,{{#format fmt=0.00 bold fill=FFFF00}}applique des formats numériques, du gras, de l'italique, des polices et des couleurs de remplissage à la colonne au-dessus de la cellule de directive, et{{#aggregate sum A2:A99}}écrit des formules de style=SUM(A2:A99)— le tout exécuté après le remplissage des espaces réservés de valeurs, les cellules de directives étant consommées ensuite et les verbes de directives inconnus toujours signalés comme diagnostics de modèle
Version 2.343.0
Added
- Le rédacteur ZIP produit des archives ZIP64 : les entrées atteignant ou dépassant les limites de taille 32 bits réservent un champ supplémentaire ZIP64 dans leur en-tête local avec des champs classiques sentinelles, les enregistrements du répertoire central émettent des tailles et décalages 64 bits avec un incrément de version requise, et l'enregistrement de fin de répertoire central est précédé de l'enregistrement EOCD ZIP64 et de son localisateur chaque fois qu'un champ classique sature
- Les plafonds de tailles d'entrées et d'archives côté écriture s'élèvent respectivement à 16 Go et 64 Go ; les garde-fous de décompression côté lecture restent inchangés
Version 2.342.0
Added
- Les images incorporées portent des métadonnées d'accessibilité :
AltTextetAltTextTitlesur chaque image se sérialisent comme attributsdescrettitledu dessin et se rechargent dans le modèle typé pour les classeurs qui ne rejouent pas le XML d'ancre brut
Changed
- Les parties de segments et de chronologies font déjà un aller-retour sans perte à travers la couche de package opaque (vérifié de bout en bout dans cette version) ; le contrat d'aller-retour est désormais verrouillé par un test de régression couvrant l'ouverture et le réenregistrement de packages contenant des segments
Version 2.341.0
Added
- Les exécuteurs de rapport peuvent ajuster automatiquement la sortie finie :
AutofitModesélectionne des passes de lignes, de colonnes ou les deux sur chaque feuille après application de toutes les cibles et avant la sérialisation, etAutofitAdjustmentajoute une marge facultative au-dessus des tailles mesurées - Les lignes avec renvoi sont dimensionnées à partir du nombre de lignes mesuré par rapport à la largeur de colonne, si bien que le texte de cellules multilignes produit par les modèles agrandit la ligne comme le ferait l'ajustement automatique d'Excel
Version 2.340.0
Added
- Les exportations PDF peuvent définir le mode initial du visualiseur — signets, vignettes, plein écran, contenu facultatif ou pièces jointes — via l'entrée
/PageModedu catalogue - Les exportations PDF peuvent définir une action d'ouverture qui saute à une page choisie à un facteur de zoom explicite ou ouvre le panneau des signets au chargement du document
- Les métadonnées XMP portent désormais les identifiants
DocumentIDetInstanceID, un événementxmpMM:History, les dates de modification et de métadonnées, et la déclarationdc:formatattendue par les validateurs d'archivage
Version 2.339.0
Added
- Un pipeline d'impression physique : le nouveau
TXLSPrintDocumentimprime des feuilles de calcul, des classeurs ou toutes les feuilles visibles via le modèle de pagination partagé, avec fenêtres de pages, collation des copies, un titre de document et des événements avant nouvelle page / après génération de page - L'aperçu de la visionneuse de classeurs gagne des modes de zoom — ajuster à la page, ajuster à la largeur ou un facteur explicite de 25 % à 400 % — avec zoom Ctrl+molette, tour de pages à la molette et panoramique horizontal lorsque la page zoomée dépasse la fenêtre
Version 2.338.0
Added
- Le rendu de graphiques dessine l'axe des valeurs : graduations et étiquettes numériques alignées à droite le long du bord gauche, quadrillage principal quand il est activé, mise à l'échelle en unités d'affichage, orientation inversée et bridage logarithmique
- Les séries affectées à l'axe de valeurs secondaire se positionnent selon leur propre échelle, si bien que les graphiques combinés conservent des amplitudes primaires et secondaires indépendantes
- Les graphiques en bulles affichent des bulles à échelle de surface dérivées de la colonne de taille de bulles au lieu de points de marqueurs fixes
- Les graphiques en mémoire résolvent leurs plages de valeurs, catégories et bulles par rapport à la feuille propriétaire quand les caches sont vides, si bien que les graphiques fraîchement créés s'affichent à l'identique des graphiques chargés
- Le modèle de graphique gagne des propriétés modifiables : taille du trou d'anneau, angle de première part, style radar, type de barres de secteur, position et mode de découpage, taille du tracé secondaire et largeur d'écart, le tout persistant à travers l'enregistrement et le chargement
Fixed
- Les graphiques de catégories dont les points portent des valeurs mais aucune catégorie numérique n'interrompent plus le rendu avec un espace réservé, ce qui supprimait auparavant les graduations, le quadrillage et la sortie des séries pour tous les graphiques en colonnes, en barres et en courbes
Version 2.337.0
Added
- La sortie paginée peut afficher les commentaires de cellules sous forme de liste en fin de document via le nouveau mode
PrintCommentsde l'exportateur SVG et du modèle de pagination : l'adresse de cellule, l'auteur et le texte apparaissent sous la dernière ligne de données de la feuille - Les objets de dessin nommés s'exportent comme images PNG aux DPI et à l'échelle configurés via
ExportObjectAsPNG, avec une contrepartieGetObjectSizede mesure seule qui renvoie les dimensions en points de l'objet sans rendu - Les ancres de formes de texte hors de la plage utilisée étendent désormais la surface imprimée comme le faisaient déjà les graphiques et les images
Changed
- Le moteur de rendu de pagination met en cache les polices de cellules résolues par passe et mémorise les mesures de texte répétées, supprimant les lectures redondantes du pool de polices et les appels de mesure GDI des boucles de réduction pour ajustement et du renvoi à la ligne
Version 2.336.0
Added
- La rotation du texte des cellules s'affiche désormais dans les sorties image de page, SVG, impression et aperçu : les angles de 1 à 90 degrés antihoraires et horaires pivotent autour du centre de la cellule et la forme empilée 255 émet une lettre par ligne
- Les cellules en indice et exposant s'affichent avec une ligne de base décalée et une taille de glyphe réduite au lieu de perdre leur alignement vertical
- Les sections d'en-tête et de pied de page respectent leurs codes de format de taille en points
&nnet de couleur&Kdans chaque sortie pilotée par la pagination - Les largeurs de colonnes dans la sortie paginée dérivent de la largeur de chiffre maximale mesurée de la police Standard du classeur, si bien que les classeurs basés sur des polices autres que Calibri 11 paginent avec des frontières de colonnes exactes selon Excel
- Les feuilles de calcul avec une couleur de quadrillage classique personnalisée affichent leurs lignes de grille dans cette entrée de palette au lieu de la valeur par défaut grise fixe
Version 2.335.0
Added
- Environ soixante-dix fonctions de feuilles de calcul classiques s'évaluent désormais en plus d'être analysées : le groupe mathématiques et trigonométrie
ATAN2 ASIN ACOS SINH COSH TANH ASINH ACOSH ATANH EVEN ODD, le groupe date et heureTIME HOUR MINUTE SECOND DATEVALUE TIMEVALUE DAYS360, le groupe financierMIRR IRR IPMT PPMT DB,TRANSPOSE TYPE N ADDRESS ROMAN HYPERLINK MAXA MINA, et les orthographes d'avant 2010 de la famille distribution et statistiques telles queNORMSDIST TDIST CHIDIST FDIST POISSON QUARTILE PERCENTILE PERCENTRANK COVAR CHITEST GAMMALNqui redirigent vers les implémentations pointées partageant leurs listes d'arguments
Fixed
- Les formes héritées à un argument de la CDF normale telles que
NORMSDISTcalculaient une approximation de la fonction d'erreur avec un mauvais facteur d'échelle MIRRcapitalisait les flux de trésorerie positifs avec un exposant de période décalé de un, éloignant les résultats des valeurs d'Excel
Version 2.334.0
Added
- Les espaces réservés de bandes de rapport constitués d'un seul champ de valeur écrivent désormais le type de données brut dans la cellule cible : les nombres restent numériques, les dates restent des cellules de date et reçoivent le format de date par défaut lorsque la cellule est Standard, et les booléens conservent leur type de cellule, si bien que les références SUM, de tri et de graphiques en aval fonctionnent sur les rapports générés
- Les styles de tableaux personnalisés gagnent l'ensemble complet de sections, y compris les sections de sous-totaux de tableau croisé dynamique, de sous-en-tête, de ligne vide et de champ de page, le nom, la taille et l'italique de police par section, la taille de bande et les bordures à quatre côtés via
SetSectionEx, plus les indicateurspivot/table, les propriétés de classeurDefaultTableStyleName/DefaultPivotStyleName, et un aller-retour complet côté chargement des styles, sections et attributs dxf - L'ouverture d'un classeur XLSX chiffré sans mot de passe déclenche désormais
TXLSXWorkbook.OnPasswordavec le même contrat de nouvelle tentative que le moteur classique, permettant des invites de mot de passe GUI sans savoir à l'avance que le fichier est chiffré - L'enregistrement de classeurs BIFF5 classiques avec un mot de passe applique désormais l'obfuscation XOR, et les classeurs BIFF8 peuvent sélectionner le RC4 standard via
EncryptionType, complétant la matrice de chiffrement classique aux côtés de la valeur par défaut RC4 CryptoAPI existante - Le rendu du texte des feuilles de calcul dans les sorties image de page, SVG, impression et aperçu respecte désormais l'alignement vertical et le renvoi à la ligne WrapText avec une coupure de lignes gloutonne, au lieu de rogner les cellules avec renvoi sur une seule ligne centrée
Fixed
- Les cellules d'erreur affichent désormais leur littéral d'erreur Excel tel que #DIV/0! ou #REF! dans chaque chemin de rendu au lieu d'un texte vide indéfini
- Les sections de styles de tableaux personnalisés sont écrites sous la forme de schéma
tableStyleElementafin qu'Excel reconnaisse le style, et la couleur de police d'une section ne perd plus son paramètre de gras - Les instantanés de bandes de rapport conservent chaque valeur de colonne liée lorsqu'une bande dépasse sa capacité initiale
Version 2.333.0
Added
TXLSPDFSignature.CertificationPolicypeut créer une signature de certification DocMDP qui n'autorise aucun changement, le remplissage et la signature de formulaires, ou le remplissage, la signature et l'ajout d'annotations de formulaires ; les catalogues certifiés référencent la signature via/Perms, la sortie certifiée ordinaire utilise PDF 1.5, et une certification PDF/A-1 incompatible est rejetée avant que le flux de destination ne soit modifié
Version 2.332.0
Changed
- Le PDF balisé automatique émet désormais une structure de table complète avec lignes, cellules d'en-tête et de données sémantiques, identifiants de contenu marqué denses par page, mappages exacts d'arborescence parentale, étendues de lignes et de colonnes de cellules fusionnées, et isolation des artefacts pour la décoration de pages, graphiques, images, en-têtes et pieds de page
Fixed
- La réutilisation d'un exportateur PDF efface désormais les emplacements d'objets binaires entre les documents, empêchant qu'un profil ICC, une image ou un autre flux d'une exportation antérieure remplace un objet nouvellement alloué lorsque la numérotation des objets change
Version 2.331.0
Added
- Une façade de dessin XLSX unifiée expose l'ordre des images, graphiques, zones de texte, ancres préservées et groupes mélangés, avec des opérations avant, arrière, premier plan, arrière-plan, groupe sensible aux transformations et annulation de groupe après enregistrement-réouverture qui préservent les relations de dessin
- Les styles nommés prennent en charge des parties de format liées automatiques ou explicites tout en préservant les remplacements locaux, et les 60 styles de tableau intégrés clairs, moyens et sombres sont résolus via les chemins de mise en forme partagés HTML, PDF, image, aperçu et visionneuse
TXLSPDFBookmarkprend en charge les signets Unicode hiérarchiques, les relations de frères et d'enfants, les couleurs, les titres en gras ou en italique, et les descendants développés ou réduitsTXLSPageImageExporter.ExportAllAsTiffécrit les pages sélectionnées dans un flux ou un fichier sous la forme d'un TIFF multipage compressé LZW unique, avec progression, annulation et remplacement atomique de fichier- Les ouvertures XLS classiques peuvent s'arrêter après les métadonnées globales ou accéder directement aux feuilles de calcul sélectionnées via des décalages
BOUNDSHEETvalidés, y compris le repositionnement de flux chiffré TXLSFormatSnapshotcapture un format de cellule classique complet indépendamment de son classeur source etIXLSRange.ApplyFormatl'applique à des plages de cellules, de lignes ou de colonnes- Les écritures en masse typées XLSX compatibles en ordre ligne-majeure utilisent un stockage RLE compacté, avec des statistiques publiques de cellules compactées et d'octets, ainsi qu'une matérialisation unique transparente pour des handles d'objets stables
Changed
- Les cellules XLSX vides à style seul partagent des charges utiles à comptage de références avec des modifications locales en copie sur écriture, une compaction automatique dans les chemins de mise en forme en masse, de mise à jour de styles nommés, de copie, de tri, de correctif de format, d'enregistrement et de chargement, et des octets de charge utile évités mesurables
- Les tableaux dynamiques sont diffusés directement dans les agrégats scalaires, les recherches exactes répétées réutilisent des caches de plages incrémentaux typés, et les jetons de formule immuables sans état sont partagés entre les compilations
- Les arcs elliptiques utilisent une subdivision adaptative de Bézier cubique pilotée par la planéité, partagée par les sorties PDF, SVG et bitmap, en augmentant la précision uniquement là où l'échelle ou l'excentricité l'exige
- La sortie de package XLSX stabilise désormais les chaînes partagées, les liens hypertexte, les relations et l'ordre des parties, de sorte que la construction inverse produit des packages déterministes octet pour octet identiques
- Le lecteur anticipé unifié XLS, XLSX, CSV et TSV maintient la mémoire bornée ; les continuations de chaînes partagées BIFF8 débordent au-delà d'un seuil configurable tout en conservant les protections de projection, de feuille sélectionnée, de chiffrement et d'entrée malformée
Fixed
- La liaison de packages C++Builder Win64 n'émet plus de vtables de listes d'objets génériques Delphi en double provenant des unités de comparaison de classeurs et de vérification d'importation
Version 2.330.0
Added
TXLSXWorksheet.Subtotalinsère des lignes de sous-totaux groupées, une ligne de total général configurable, des formules, une mise en forme visible héritée et des niveaux de plan compatibles Excel pour les plages de données triéesGetCellVisibleFormatrésout la mise en forme de feuille de calcul, de ligne, de colonne, de superposition de plage et de cellule explicite sans matérialiser une cellule videCheckDataValidationteste une valeur candidate par rapport aux règles couvrant une cellule et peut la valider de manière atomique uniquement lorsqu'elle est valide
Changed
- Les mémos de balayage de recherche utilisent des clés binaires exactes compactes et une seule recherche de charge utile par succès de cache, réduisant l'allocation de recalcul et le travail de table de hachage sans modifier les comparaisons de recherche
- L'export CSV à largeur fixe remplit chaque champ en une seule opération, en maintenant le temps de remplissage linéaire par rapport à la largeur de sortie configurée
Fixed
- Les balayages arrière
ReplaceTextIninvoquent désormais les rappels de remplacement dans l'ordre de balayage inverse demandé - Les cellules stylées sans valeur ni formule ne bloquent plus le débordement de texte des cellules voisines dans le rendu SVG, image et aperçu
- La sortie numérique XLS classique normalise le zéro négatif en plus des valeurs non finies et sous-normales avant d'écrire les enregistrements numériques BIFF
Version 2.329.0
Added
A1ToR1C1convertit les formules au format A1 en notation R1C1 (décalages relatifs, formes absolues avec$, plages et allers-retours viaR1C1ToA1), complétant ainsi les deux directions de la conversion de style de référence
Changed
- Le mémo de recherche du recalcul ignore les vecteurs de balayage de moins de cinq cellules dans
VLOOKUP,XLOOKUP/XMATCHetMATCH, lorsqu'un balayage brut est moins coûteux que l'aller-retour du dictionnaire
Version 2.328.0
Added
- Le moteur de rendu de page partagé derrière les sorties SVG, image et aperçu applique désormais les styles de cellules XLSX : remplissages unis (avec alpha), polices et couleurs par cellule, alignement horizontal avec le défaut numérique à droite d'Excel, fusion des bordures de style Excel où l'arête partagée la plus lourde l'emporte, réduction à la taille qui adapte la police à la colonne, et débordement du texte long dans les cellules voisines vides consécutives
Version 2.327.0
Added
- Le chargeur CSV/TSV gagne des directives d'importation par colonne (
cctText,cctNumber,cctDate,cctBoolean,cctSkip) qui reflètent l'assistant d'importation de texte d'Excel, afin que des colonnes individuelles puissent être forcées en texte pour conserver les zéros de tête, converties en un type ou supprimées de l'importation - Importation de texte à largeur fixe : l'affectation de largeurs de champ fait passer le chargeur de l'analyse par séparateur au découpage par position de caractère, et le sauveur peut émettre des colonnes à largeur fixe remplies d'espaces avec troncature
Version 2.326.0
Added
- La recherche dans les feuilles de calcul XLSX gagne des méthodes fenêtrées
FindTextInetReplaceTextInqui confinent le balayage à une plage de cellules rectangulaire, plus un indicateur d'ordre de balayage par colonne qui reflète le mode Rechercher : Par colonnes de la boîte de dialogue Rechercher et remplacer d'Excel ; le balayage arrière accepte désormais une ancre nulle pour démarrer depuis le coin inférieur droit - L'enregistrement se protège désormais contre les formules plus longues que la limite de 8192 caractères d'Excel, en échouant rapidement avec la cellule fautive identifiée au lieu d'écrire un classeur qu'Excel ouvrirait en mode de réparation
Fixed
- Les valeurs numériques de cellules non finies (NaN et infini positif ou négatif) ne peuvent plus laisser fuir des jetons non analysables dans les parties XLSX enregistrées ; elles sont désormais sérialisées en cellules d'erreur
#NUM!, et les doubles sous-normaux sont remis à zéro dans les deux écritures XLSX et BIFF8, conformément à ce qu'Excel peut stocker et afficher
Version 2.325.0
Added
- Les API de format de classeur incluent désormais des mappages XML et des liaisons de schéma modifiables, plusieurs fenêtres de classeur ordonnées, des sélections multi-zones et par volet, ainsi que l'inspection sans perte des jetons de formule appartenant à l'appelant, la reconstruction, le remplacement de référence et la réécriture atomique pour XLS et XLSX
- Le traitement des classeurs inclut désormais un tri horizontal ou vertical stable avec des comparateurs personnalisés et un déplacement explicite des formules, la conversion des styles et formules BIFF2 à BIFF4, une façade unique de lecteur anticipé projeté pour XLS, XLSX, CSV et TSV, des vues personnalisées typées et des sous-modèles de connexion OLAP, de table Web, de texte fixe et de paramètres modifiables
- Le calcul et l'inspection incluent désormais des diagnostics structurés de fonction manquante, de référence externe et de dépendance circulaire, des registres UDF globaux et locaux au classeur, l'ordre visuel bidirectionnel Unicode, des stratégies AutoFit pour les cellules fusionnées, la préservation typée des feuilles de macros Excel 4 et l'analyse des commandes, ainsi que les fonctions
ISOMITTED,ARRAYTOTEXT,VALUETOTEXT,PDURATIONetRRI - La génération de rapports compilée couvre désormais les espaces réservés de classeur entier, les bandes de lignes, de colonnes et de tableaux croisés nommées, les bandes de tableaux Excel extensibles, une abstraction unique de table et de curseur, des index de relations à clé composite exacts, des contextes de données paresseux, des combinateurs de tables en flux, des fournisseurs de requêtes nommées contrôlés, des bandes de feuilles par enregistrement, des feuilles de continuation en cas de débordement et des inclusions récursives immuables
- La création de rapports inclut désormais des conditions compilées, la recherche, les expressions régulières, des formules et formats dynamiques, des champs d'image, la reliaison des séries de graphiques, des exécuteurs réutilisables avec sortie en flux ou fichier atomique, le clonage de plages sensible aux dépendances, la planification de la pagination avec pieds de page fixes et équilibrés, des diagnostics adressés, une exécution stricte, la vérification des modèles et la migration sûre des espaces réservés hérités pris en charge
- La sortie PDF inclut désormais des arbres de structure balisés automatiques, des champs signés par l'hôte visibles ou invisibles, des profils de conformité PDF/A-1, PDF/A-2 et PDF/A-3 explicites aux niveaux a et b, une progression et une annulation atomiques, un repli de police en cache sensible aux styles, un façonnage contextuel du texte complexe, des dégradés natifs multi-arrêts, un alpha par arrêt, des motifs de remplissage de cellule, des ombres et des annotations de commentaires positionnées
- Le rendu partagé inclut désormais le SVG natif pour les plages, les pages, les classeurs et les objets nommés, des pages PNG et JPEG incrémentales, une géométrie de mise en page neutre vis-à-vis du moteur, des graphiques et formes vectoriels intégrés dans le HTML, des sessions HTML partielles avec état et CSS partagé, des effets d'image rendus, la géométrie vectorielle des formes prédéfinies et du WordArt, des détails avancés de graphiques scientifiques et financiers, ainsi qu'une disposition déterministe des collisions d'étiquettes de données et des lignes de rappel
Changed
- Les 55 éléments de capacités audités F01 à F18, R01 à R19 et V01 à V18 disposent désormais d'implémentations prises en charge achevées avec des limites explicites de propriété, de sécurité de format, d'annulation et de sortie
- Les grands modèles de rapports compilent les cibles d'objets et les expressions une seule fois, matérialisent uniquement les champs d'axe liés, consomment les curseurs de données une seule fois, hachent les clés de relation et de jointure, figent les préfixes de collections sources pour un clonage disjoint répété et évitent de re-parcourir les objets de classeur générés
- Les chemins de rendu partagent la pagination, la géométrie, le placement des objets, l'état des effets et les caches de ressources documentaires, tandis que les sorties PDF, SVG, HTML, bitmap, métafichier, aperçu et impression ne conservent que leurs encodeurs spécifiques au format
Fixed
- Les événements d'écriture de cellules XLSX sérialisent désormais leurs valeurs de remplacement effectives sans conserver les segments de texte enrichi obsolètes, les jetons de nom externe BIFF préservent l'index complet du nom sur 4 octets, et les sources de connexion de niveau supérieur font des allers-retours indépendamment des sources d'importation de texte tout en conservant la source héritée de secours
- La signification héritée des styles et formules BIFF, le remappage des fenêtres de classeur et des sélections, les références de formules absolues mixtes, la propriété des jetons de formule et la réécriture des jetons invalides conservent désormais un comportement déterministe sans perte entre le chargement, la modification et l'enregistrement
- L'expansion des rapports rejette désormais les conflits déterministes de table, de filtre, de nom, de chevauchement, d'objet partiel, de grille et pilotés par requête avant les écritures structurelles, préserve la cardinalité des tables à zéro ligne lorsque c'est représentable, conserve les clés de jointure entières exactes au-delà de 2^53 et signale des comptes d'application déterministes après annulation ou échec
- L'export PDF et vectoriel préserve désormais les correspondances Unicode des polices de secours, les clusters de graphèmes et de façonnage, les restrictions des profils d'archivage, l'alpha des dégradés, les effets d'image, les décorations de graphiques, le placement dense des étiquettes et l'atomicité de la sortie, sans croissance des ressources lors de contenus répétés
Version 2.324.0
Added
- L'inspection sans perte des jetons de formule et la réécriture protégée pour XLS et XLSX via
TXLSFormulaTokenStream,ParseFormulaTokens,GetFormulaTokens,FormulaTokensToTextetSetFormulaTokensexposent les types et classes de jetons RPN, les jetons BIFF bruts et leurs charges utiles supplémentaires, les drapeaux de référence indépendants, le clonage, le remplacement de référence, la provenance contextuelle et la réutilisation BIFF compatible exacte, tout en rejetant les flux malformés, incompatibles, détenus par des tableaux ou non pris en charge avant toute mutation de cellule - Les bandes de rapports de tableaux Excel extensibles via
TXLSCompiledTableReportBandutilisent un instantané de curseur borné pour étendre une seule ligne de modèle de données tout en préservant les en-têtes, les totaux, les plages de tableau et de filtre automatique, l'état du filtre et du tri, les métadonnées de colonnes, les formules calculées et de totaux, les styles, les références structurées et les objets de feuille de calcul dépendants ; les résultats représentables à zéro ligne suppriment la ligne de données du modèle, tandis que les mises en page pilotées par requête, conflictuelles, invalides ou en débordement échouent avant les écritures - Les chaînes de repli de police PDF sensibles aux styles via
SetFontFallbackChain,AddFontFallbacketClearFontFallbackChainsrésolvent les niveaux de famille source et de style par couverture de glyphes, mettent en cache les visages chargés et les sélections, préservent les scalaires supplémentaires et les clusters de graphèmes inter-ruptures, attribuent des CID distincts aux séquences Unicode à glyphes partagés, intègrent les visages TTC autonomes et rejettent atomiquement la sortie PDF/A lorsqu'aucun glyphe intégré n'est disponible
Version 2.323.0
Added
- Modèles de rapports de classeur réutilisables via
TXLSCompiledReportTemplate: les espaces réservés sont compilés une seule fois et peuvent être appliqués de manière répétée sans re-parcourir le classeur, à l'aide d'une recherche de valeurs triée et de fragments de texte pré-découpés dans les cellules, le texte enrichi, les commentaires, les commentaires filetés, les hyperliens, les zones de texte, les titres de graphiques et les noms de séries, les en-têtes et pieds de page, les noms de feuilles de calcul, les noms définis et les propriétés de document - La liaison de données de rapports via
IXLSReportTable,IXLSReportCursor, le chargement paresseuxIXLSReportTableProvider, les tables mémoire à accès aléatoire etTXLSReportRelationIndex, qui construit un hachage enfant à clé composite une seule fois et conserve les numéros de ligne au lieu de copier les charges utiles de lignes pour une recherche maître-détail répétée - Le calcul de formules évalue désormais
PDURATIONpour le nombre de périodes nécessaires afin d'atteindre une valeur d'investissement cible etRRIpour le taux de croissance périodique équivalent, y compris les limites d'erreur numériques compatibles Excel et le préfixe de stockage OOXML_xlfn.requis - Le calcul de formules évalue désormais
ISOMITTED,ARRAYTOTEXTetVALUETOTEXT, y compris une valeur dédiée d'argument omis qui reste distincte d'une cellule vide, les allers-retours des jetons d'arguments manquants BIFF, les tableaux à une et deux dimensions, l'échappement strict des chaînes, les séparateurs localisés, les règles de conversion des erreurs et les préfixes OOXML des fonctions futures - Le pré-vol des formules structurées via
TXLSXWorkbook.AnalyzeFormulaIssuessignale les fonctions manquantes, les références de classeur externes et les composants de dépendance circulaire exacts avec les coordonnées de cellules et des listes de membres bornées, tandis que les littéraux de chaîne et les références structurées locales sont exclus des fausses correspondances - Le clonage de plages sensible aux dépendances via
TXLSXWorksheet.CloneRangeTocopie les cellules sélectionnées, les plages fusionnées, les mises en forme conditionnelles, les validations de données, les hyperliens, les commentaires, les images et les graphiques en une seule opération, déplace les plages appliquées et les ancres, et traduit les charges utiles de formules avec une sémantique de références relatives et absolues mixtes ; les bandes de rapports utilisent le même chemin pour les objets dépendants - La progression et l'annulation de l'export PDF via
TXLSPDFExport.OnProgress,OnProgressExetCancel: les notifications de début, de page et de fin ajoutent une surcharge de rappel négligeable, l'annulation est vérifiée entre les passes de lignes et les objets de page, les flux annulés ne reçoivent aucun PDF partiel et l'exportateur reste réutilisable - Les diagnostics de rapports compilés via
TXLSCompiledReportTemplate.Analyze, l'exécution stricte etWriteDiagnosticsidentifient les valeurs manquantes, les espaces réservés vides et les espaces réservés non fermés avec le type cible ainsi que les coordonnées de feuille de calcul et de cellule avant toute mutation, ou écrivent les mêmes constats dans une feuille de calcul de diagnostic - L'exécution de rapports réutilisable via
TXLSCompiledReportRunnerfournit une progression de début, de cible et de fin avec les états terminé, annulé et échoué, prend en charge l'annulation avant la première écriture ou entre les cibles compilées, signale le nombre exact d'applications et reste réutilisable après annulation ou exceptions sans re-parcourir le classeur - Les stratégies AutoFit pour cellules fusionnées en XLS classique et XLSX permettent à la première ou à la dernière ligne ou colonne d'absorber la croissance requise, ou de la répartir uniformément sur l'étendue fusionnée, tout en préservant le comportement de surcharge hérité, les états masqués, les bornes explicites et les appels répétés déterministes
- Les annotations de commentaires PDF facultatives via
TXLSPDFExport.ExportCommentsAsAnnotationsplacent l'auteur et le texte du commentaire Unicode sur le rectangle de la cellule d'origine tout en préservant la page existante des commentaires en fin de document ; les index de commentaires par feuille se construisent en environ O(C log C) et prennent en charge la recherche de cellules en O(log C) - Les registres hiérarchiques de fonctions définies par l'utilisateur permettent aux classeurs XLS et XLSX de partager des gestionnaires à l'échelle du processus tout en conservant les remplacements locaux au classeur, le remplacement, la suppression, l'effacement et le repli existant sur l'événement de classeur ; la recherche moyenne est en O(1), les correspondances locales masquent les noms globaux et les gestionnaires s'exécutent hors des verrous du registre pour un recalcul parallèle et une auto-suppression sûrs
- Les combinateurs paresseux de tables de rapports via
TXLSReportTableFactoryfournissent les premières lignes, la projection de colonnes, le nombre de lignes, des définitions d'agrégats minimum et multiples, l'union mappée par schéma, des partitions de division contiguës et des jointures par hachage internes ou gauches préservant les doublons, sans matérialiser des charges utiles de lignes intermédiaires complètes - L'export incrémental de pages PNG et JPEG via
TXLSPageImageExporterprend en charge les plages, les feuilles de calcul et les classeurs XLS et XLSX avec la sélection de pages, le DPI, l'échelle, la qualité JPEG, la progression, l'annulation et des sessions réutilisables ; un modèle de pagination est construit par session et la mémoire bitmap est libérée après chaque page - Les fenêtres de classeur XLSX multiples via
TXLSXWorkbook.WorkbookViewspréservent les onglets actifs indépendants, les premières feuilles visibles, la visibilité, l'état réduit, la géométrie, l'affichage des onglets, le défilement, les attributs inconnus, les extensions et les liaisons de vues de feuille de calcul correctement remappées, tandis que les propriétés existantes de fenêtre unique continuent de concerner la première vue - Les bandes de rapports nommées de lignes, de colonnes et de tableaux croisés via
TXLSCompiledReportBandétendent structurellement un modèle de nom défini à partir d'instantanés de données bornés en une passe, préservent les formules et les objets de feuille de calcul dépendants, tuilent les métadonnées explicites de lignes et de colonnes sans créer de valeurs par défaut de taille nulle et réutilisent les limites fixes de collections sources afin qu'un clonage répété dans la même feuille ne re-parcourt pas les charges utiles générées - L'export PDF écrit désormais les dégradés axiaux ou radiaux à deux arrêts et à plusieurs arrêts comme des trames PDF natives, réutilise les ressources identiques de fonction, de trame et de transparence, rogne chaque remplissage sur sa cellule et applique un alpha de dégradé plein ou uniforme sans l'ancienne approximation en rectangles en bandes
Fixed
- Les remplacements personnalisés de largeur et de hauteur de papier en points participent désormais au calcul de la bande de pagination ainsi qu'à l'objet de page final, de sorte que les sauts de page et les dimensions rendues utilisent la même zone disponible
Version 2.322.0
Added
- Le calcul de formules évalue désormais les fonctions de Bessel de première espèce
BESSELJ(oscillante) etBESSELI(modifiée), calculées via la série entière avec récurrence des termes pour une stabilité numérique sur toute la plage pratique des arguments
Version 2.321.0
Fixed
- L'export RTF XLSX construit désormais une véritable table de polices au lieu de coder en dur Calibri : le pré-balayage collecte chaque nom de police de cellule distinct, le
\fonttblliste chacune avec son propre index\fNet le texte de chaque cellule référence sa police réelle — les classeurs mis en forme en Times New Roman, Courier New ou toute autre police ne se ré-affichent plus visuellement en Calibri lorsqu'ils sont ouverts dans Word ou WordPad
Version 2.320.0
Fixed
- L'export PDF rend désormais la rotation du texte sur le chemin du moteur XLS classique : les cellules avec une orientation de 90 ou 270 degrés dessinent leur texte verticalement via une matrice de texte PDF pivotant autour du centre de la cellule, en accord avec le comportement existant du chemin XLSX ; auparavant, les en-têtes verticaux et les étiquettes pivotées étaient rendus horizontalement dans les PDF produits à partir de classeurs
.xls
Version 2.319.0
Added
- Le calcul de formules évalue désormais les combinateurs de tableaux dépendant de LAMBDA d'Excel 365 :
MAP(transformation élément par élément),REDUCE(pliage vers une valeur unique),SCAN(pliage en diffusant chaque étape intermédiaire),MAKEARRAY(construction à partir des indices de lignes et de colonnes),BYROW(agrégat par ligne diffusant une colonne) etBYCOL(agrégat par colonne diffusant une ligne), complétant la famille de programmation fonctionnelle LAMBDA aux côtés de la prise en charge existante deLAMBDAetLET
Version 2.318.0
Added
- Le calcul de formules évalue désormais les fonctions financières d'obligations et de bons du Trésor :
COUPDAYBS,COUPDAYS,COUPDAYSNC,COUPNCD,COUPPCD,COUPNUM(primitives de décompte des jours de coupon),PRICE/YIELD(tarification standard des obligations avec résolution du rendement par dichotomie),PRICEDISC/YIELDDISC(titres à escompte),PRICEMAT/YIELDMAT(basées sur l'échéance),DURATION/MDURATION(Macaulay et modifiée),TBILLEQ/TBILLPRICE/TBILLYIELD(bons du Trésor),DISC/INTRATE/RECEIVED(escompte et intérêts),ACCRINTM(intérêts courus à l'échéance),DOLLARDE/DOLLARFR(conversion des dollars fractionnaires),EFFECT/NOMINAL(taux effectif et nominal),CUMIPMT/CUMPRINC(intérêts et capital cumulés),FVSCHEDULE(valeur future à taux variables) etAMORDEGRC/AMORLINC(amortissement français) ; toutes partagent un moteur autonome et imbriqué de dates de coupon avec les cinq bases standard de décompte des jours
Version 2.317.0
Added
- Le chargement des classeurs chiffrés accepte désormais les fichiers de chiffrement Agile qui déclarent l'algorithme de hachage SHA-256 (produits par certains logiciels tiers) : la dérivation de la clé de mot de passe, la boucle de spin, le vérificateur de mot de passe ainsi que les IV clé/valeur d'intégrité des données et le HMAC suivent tous le hachage déclaré, tandis que les fichiers déclarant des hachages incohérents entre les données de clé et le chiffreur de clé sont toujours rejetés ; l'enregistrement continue d'écrire la variante SHA-512 par défaut d'Excel
Version 2.316.0
Added
SortRangepréserve les formules sur les deux moteurs de classeur : les cellules de formule voyagent avec leurs lignes et leurs références relatives se ré-ancrent selon la sémantique de tri d'Excel (les parties absolues $ restent, les références déplacées hors de la grille se fixent en place), de sorte que les tables triées continuent de calculer au lieu de se réduire à des valeurs- Images d'arrière-plan de feuille :
SetBackgroundImagemet en mosaïque une image derrière les cellules d'une feuille de calcul XLSX (affichage uniquement, comme Excel), avec un aller-retour complet via l'élémentpicturede la feuille de calcul, sa relation média et les types de contenu du package
Fixed
- Le recalcul d'une formule arithmétique qui référence une cellule vide jamais touchée n'échoue plus avec une erreur de conversion — les opérandes vides contribuent 0 comme dans Excel
Version 2.315.0
Added
CopyToClipboardpublie le format de presse-papiers natif Biff8 en plus du texte et du HTML sur les deux moteurs de classeur, de sorte que les plages collées dans Excel ou dans d'autres classeurs HotXLS transportent les valeurs, les formules, les formats de nombres, les polices, les remplissages, les bordures, l'alignement et les cellules fusionnées au lieu d'un texte brutPasteFromClipboardprivilégie la charge utile Biff8 lorsqu'elle est présente : le texte collé depuis Excel conserve ses valeurs d'origine sans re-analyse des dates et des nombres dépendante de la locale, les formules ré-ancrent leurs références relatives sur la cible de collage et les zones fusionnées se reconstruisent à destination ; les deux moteurs collent également les blocs de l'autre avec une mise en forme complète
Changed
- Les formules collées dans Excel arrivent sous forme de valeurs calculées (une limitation de l'analyse Biff8 du presse-papiers tiers d'Excel) ; tout le reste — texte, nombres avec formats, remplissages, bordures et fusions — se colle sans perte dans Excel, et les formules survivent intégralement dans les directions Excel vers HotXLS et HotXLS vers HotXLS
Version 2.314.0
Added
- Objets de caméra sur les feuilles de calcul XLSX :
AddCameraplace une image d'instantané dynamique liée à une plage de cellules — l'image liée de l'outil caméra d'Excel — avec la liaison de plage écrite dans l'extension de dessin documentée et une image d'espace réservé dimensionnée à l'ancre ; les objets de caméra créés par Excel se rouvrent avec leur liaison de plage préservée
Version 2.313.0
Added
- Application de correctifs en place aux feuilles de calcul des packages XLSX :
BeginPatchsur le rédacteur en flux ouvre un classeur existant et réécrit exactement une feuille de calcul — chaque autre partie (styles, dessins, graphiques, tableaux croisés dynamiques, parties personnalisées) est copiée avec ses octets compressés verbatim, sans décompresser ni ré-écrire quoi que ce soit, de sorte qu'un grand modèle voit sa feuille de données actualisée en une fraction d'une reconstruction complète - Le mode correctif peut également ajouter une nouvelle feuille de calcul : la feuille est enregistrée dans la liste des parties du classeur, les relations et les types de contenu avec une numérotation qui n'entre jamais en collision avec les parties existantes, en suivant la propre convention de relations stricte ou transitoire du package
- Les packages corrigés abandonnent automatiquement la chaîne de calcul obsolète (Excel la reconstruit au chargement), et les fonctionnalités qui nécessiteraient de nouvelles parties de package (tables, graphiques, images, commentaires, noms définis) signalent une erreur claire au lieu d'écrire un package invalide
Version 2.312.0
Added
- Sortie Open XML strict : définir
StrictOOXMLsur un classeur XLSX enregistre le package en conformité stricte ISO/IEC 29500 — chaque déclaration d'espace de noms et chaque type de relation passe des vocabulaires transitoires aux vocabulaires strictspurl.oclc.orgdans les feuilles de calcul, les chaînes partagées, les styles, le thème, les dessins, les graphiques, les commentaires, les propriétés de document et les parties préservées, tandis que les types de contenu, les noms de parties et les vocabulaires VML restent tels que les deux classes de conformité les partagent - La lecture des classeurs à conformité stricte est désormais complète : les types de relations écrits sous forme stricte résolvent vers les mêmes cibles que leurs équivalents transitoires, complétant l'acceptation stricte des espaces de noms d'éléments afin que les fichiers enregistrés dans le mode "Strict Open XML Spreadsheet" d'Excel s'ouvrent comme tout autre classeur
- L'enregistrement avec la sortie stricte activée signale une erreur claire pour les fonctionnalités qui n'existent que comme extensions Microsoft (projets VBA, contrôles de formulaire, commentaires filetés, métadonnées de tableaux dynamiques) au lieu d'écrire un package qui ne serait pas valide
Fixed
- Les propriétés de document personnalisées déclaraient un espace de noms de types de valeurs mal orthographié, ce qui pouvait faire échouer la validation de la partie des propriétés dans les outils externes
Version 2.311.0
Added
- La lecture d'un classeur XLS préserve les enregistrements de feuille de calcul non reconnus : tout enregistrement que l'analyseur typé ne modélise pas est capturé verbatim et rejoué à l'enregistrement, de sorte que les fichiers contenant des enregistrements spécifiques à un fournisseur ou de spécifications plus récentes font un aller-retour complet dans HotXLS sans les perdre
Version 2.310.0
Added
- Formes à géométrie prédéfinie sur les feuilles de calcul XLSX :
AddPresetShapeécrit n'importe lequel des 187 jetons prédéfinis OOXMLST_ShapeType(rightArrow,flowChartDecision,star5, …) dans le<a:prstGeom>du dessin verbatim, et la propriétéPrstTokenpermet aux formes existantes de changer de géométrie — les jetons font un aller-retour complet à travers l'enregistrement et la réouverture
Version 2.309.0
Added
- Traitement des modèles sur les feuilles de calcul :
ApplyTemplateremplace les espaces réservés{{key}}dans toutes les cellules — les valeurs conservent leurs types natifs, les espaces réservés de formules sont substitués avant l'analyse — etFillTemplateBandclone un bloc de modèle une fois par enregistrement avec une traduction des lignes de formules par clone, un clonage des plages fusionnées et un champ#skippour les conditionnelles au niveau des lignes, transformant toute feuille artisanale en générateur de rapports piloté par les données
Version 2.308.0
Added
- L'export PDF peut joindre des fichiers :
AddAttachmenttransporte des documents bruts dans le PDF exporté sous forme d'entrées/EmbeddedFiles(spécification de fichier, flux intégré avec sous-type MIME facultatif et arbre des noms du catalogue), de sorte que les rapports sont livrés avec leurs données d'accompagnement dans un seul fichier autonome
Changed
- La lecture d'un classeur XLS avec un mot de version BIFF non reconnu ne rejette plus tout le flux : le lecteur retombe sur la disposition BIFF8 afin que les fichiers provenant de logiciels émettant des numéros de version inhabituels se chargent toujours lorsque leurs enregistrements sont analysés
Version 2.307.0
Added
- Gestion centralisée des fichiers temporaires : chaque fichier temporaire créé par la bibliothèque est enregistré et purgé, de sorte qu'un export interrompu ou une exception entre la création et la suppression ne laisse plus de fichiers temporaires orphelins
VerifyEncryptedSaverouvre un conteneur chiffré tout juste écrit à travers tout le pipeline de déchiffrement et fait échouer l'enregistrement lorsque le mot de passe ne peut pas le déverrouiller — les conteneurs corrompus apparaissent immédiatement au lieu de l'être à la prochaine ouverture par l'utilisateur- L'export de jeux de données déclenche un événement
OnExportLimitlorsque le fractionnement des lignes entre en jeu, et les limites de grille du classeur par version de format sont exposées comme constantes (65536×256 pour BIFF8, 1048576×16384 pour les formats 2007 et ultérieurs) pour la négociation des capacités
Version 2.306.0
Added
- Les feuilles de calcul XLSX gagnent la création de contrôles de formulaire :
AddFormButton,AddFormCheckBox,AddFormRadioButton,AddFormComboBoxetAddFormListBoxécrivent des contrôles de bouton / case à cocher / bouton radio / liste déroulante / liste avec légendes, cellules liées, état coché et liaison de macro — le chemin d'enregistrement émet les formes VML, les partiesctrlPropspar contrôle, leurs relations et les entrées de types de contenu, et les fichiers contenant des contrôles font un aller-retour complet de leurs parties verbatim à la réouverture
Version 2.305.0
Added
- L'export PDF gagne un mode
UsePDFAoptionnel produisant des documents identifiés PDF/A-2b : le profil sRGB IEC61966-2.1 est intégré comme intention de sortie GTS_PDFA1, les métadonnées XMP portent l'identification de partie/conformitépdfaidet l'en-tête annonce PDF 1.7 — associez-le à une police TrueType intégrée (UnicodeFontFileou la police installée auto-sélectionnée) pour une sortie archivable
Version 2.304.0
Added
- Évaluation dynamique entre classeurs :
RegisterExternalWorkbookassocie un objet classeur à un nom de classeur afin que des formules comme[Book.xlsx]Sheet!A1se compilent (le préfixe[Book]Sheet!Refse parse désormais en une véritable référence externe) et lisent l'état actuel de l'objet enregistré à chaque recalcul ; la désinscription supprime le lien dynamique et retombe sur le cache des liens externes
Version 2.303.0
Added
- Comparaison de classeurs via
TXLSXWorkbookCompare: apparie les feuilles par nom et signale les feuilles ajoutées/supprimées, les cellules ajoutées/supprimées, les valeurs modifiées, les formules modifiées et les plages fusionnées ajoutées/supprimées — sous forme de liste de diff structurée pour les outils et d'une ligne lisible par différence viaReport
Version 2.302.0
Added
- Le rédacteur direct en flux gagne une fourniture de lignes en mode extraction :
OnNeedRowse déclenche une fois par ligne potentielle et le fournisseur écrit cette ligne directement à travers le rédacteur, déclarant la fin des données pour s'arrêter — les pipelines de données peuvent piloter un export sans pré-bufferiser les listes de lignes
Version 2.301.0
Added
- L'export ODS écrit les formules de cellules : les références à la même feuille de calcul sont converties en l'orthographe OpenFormula standard
of:=(références entre crochets, séparateurs d'arguments à point-virgule, littéraux de chaîne inchangés), tandis que les références qualifiées par feuille et structurées passent par le transitmsoxl:qu'Excel lui-même utilise pour les allers-retours entre suites — les packages enregistrés se rouvrent avec le texte de formule Excel d'origine
Version 2.300.0
Added
- Les feuilles de calcul de droite à gauche s'affichent désormais en miroir partout : l'export PDF inverse la géométrie des colonnes sur la largeur imprimable (la colonne A à droite, le contenu des cellules inchangé) et les deux exportateurs HTML émettent
dir="rtl"sur le tableau afin que le navigateur inverse l'ordre des colonnes — l'indicateur de feuille fait déjà l'aller-retour via XLSX et BIFF
Version 2.299.0
Added
- L'export de jeux de données (
TDataToXLS) gagne une bande de titre et une bande de pied de page :Titlerestitue une ligne fusionnée en gras au-dessus de l'en-tête (avec son propreTitleFontet unTitleColorfacultatif), etFooterajoute une ligne sous la dernière ligne de données ou de synthèse ForEachFormattedCellsur une feuille de calcul parcourt chaque cellule renseignée dans l'ordre des lignes et des colonnes et transmet son texte affiché — format de nombre appliqué — via un rappel, prêt pour l'indexation et l'extraction de texte
Version 2.298.0
Added
- L'exemple ApiTour s'ouvre désormais directement sur une démonstration en direct : un tableau de bord de ventes en mémoire avec des vignettes KPI, des formules
SUMIF/COUNTIFinter-feuilles, des barres de données, une échelle de couleurs, un jeu d'icônes et deux graphiques s'affiche dans la visionneuse de classeur intégrée dès le démarrage de l'exemple, chaque cellule de la grille reste modifiable avec recalcul instantané et mises en forme conditionnelles actualisées, et des actions en un clic exportent la démonstration au format PDF, HTML et CSV ou la transmettent à Excel avec les temps de génération et d'export en direct - L'exemple ApiTour C++Builder reproduit la nouvelle démonstration Delphi, la visionneuse intégrée, la barre de formule, les actions d'export et le journal d'activité
Changed
- Les exemples ApiTour remplacent les boîtes de dialogue modales de résultats par un journal d'activité dans la fenêtre, tandis que la procédure classique de création, de modification et d'export conserve son comportement
Version 2.297.0
Added
- L'export PDF gagne un mode facultatif
UseXRefStreamproduisant des fichiers PDF 1.5 avec des flux d'objets compressés et un flux de références croisées binaire : les petits objets de dictionnaire voyagent dans un conteneur compressé Flate et la table xref classique ainsi que la remorque sont remplacées par un flux compact, réduisant la taille des documents exportés tandis que le contenu des pages reste identique octet par octet
Version 2.296.0
Added
- Le lecteur direct en flux gagne un mode facultatif
AutoSplitRows: une ligne au-delà de la limite de la feuille de calcul (1048576) termine la feuille courante et continue sur une feuille nouvellement créée<name>_2,<name>_3…, de sorte que les exports illimités n'émettent jamais d'index de ligne illégal FillTableCalculatedColumnsur une feuille de calcul propage la formule de colonne calculée d'une colonne de tableau dans chaque ligne de données, traduite par ligne et par cellule comme le fait la propre saisie d'Excel, puis recalcule naturellement
Version 2.295.0
Changed
- L'export HTML XLSX centralise le style des cellules : les combinaisons de styles identiques sont émises une seule fois sous forme de classes
td.cNdans une feuille de style au lieu d'un attributstyleen ligne répété sur chaque cellule, réduisant la sortie HTML pour les tableaux au style uniforme ; les superpositions visuelles de mise en forme conditionnelle restent en ligne afin de conserver leur caractère propre à chaque cellule
Version 2.294.0
Fixed
- Les références structurées sous forme de ligne courante (
Table[@Col]) sont désormais évaluées par rapport à la ligne propre de la cellule de formule pendant le recalcul, à la fois dans les chemins d'évaluation série et parallèle ; auparavant, chaque formule de ce type lisait la ligne 1 de la colonne — généralement le texte d'en-tête — et le recalcul échouait franchement avec une erreur de transtypage lorsque cette ligne contenait du texte
Version 2.293.0
Changed
- Le cache de mémorisation facultatif
RecalcAggregateCachecouvre désormais également les agrégats inconditionnels à plage unique —SUM,AVERAGE,MIN,MAX,COUNTetCOUNTAsur une seule plage simple d'une même feuille — de sorte que les totaux répétés sur le même bloc réutilisent le résultat du premier passage sous la même contrainte de stabilité de référence que la famille conditionnelle
Version 2.292.0
Added
- Le générateur classeur-vers-code (
TXLSCodeGen) : parcourt un classeur et émet les instructions source qui le reconstruisent — création de feuilles, valeurs de cellules, formules, formats de nombre, largeurs de colonnes et plages fusionnées — dans les dialectes Delphi ou C++Builder, de sorte qu'un fichier créé à la main devient un exemple d'API prêt à l'emploi - Le validateur d'import par règles de colonne (
TXLSImportCheck) : règles d'obligation, de longueur de texte, de motif regex et d'unicité par colonne, plus un rappel de l'appelant exécuté sur les lignes de données d'une feuille de calcul ; les violations peuvent être annotées avec une police rouge et un commentaire de motif, etKeepOnlyViolationscompacte la feuille à l'en-tête plus les lignes en échec pour un classeur « à corriger et à renvoyer »
Version 2.291.0
Added
- L'import CSV accepte un enregistrement d'options : les surcharges de
OpenCSVprennent en charge le saut de lignes de tête (SkipRows, pour les bannières de titre au-dessus de la grille) et la suppression des espaces (AutoTrim) en plus des commutateurs de séparateur et de détection de type FillMergedCellValuessur une feuille de calcul copie la valeur d'ancrage de chaque plage fusionnée dans chaque cellule membre couverte, de sorte que les feuilles de style rapport avec des libellés fusionnés se lisent comme une grille plate uniqueAddListValidationgagne une surcharge de tableau de chaînes qui regroupe les éléments en une seule liste déroulante en un seul appel- L'export de jeux de données (
TDataToXLS) gagne un zébrurage (AlternatingColor, appliqué aux lignes de détail impaires) et une ligne de totaux (SummaryRow) qui ajoute de véritables formulesSUMpour les champs numériques exportés ou une liste de champs nommée par l'appelant, avec une cellule de légende en gras
Fixed
- L'export de jeux de données applique désormais l'arrière-plan
DetailColorconfiguré aux cellules de détail ; auparavant, la propriété était acceptée mais jamais appliquée
Version 2.290.0
Changed
- Le cache de mémorisation facultatif
RecalcLookupCachecouvre désormais également les recherches exactes et approchées deVLOOKUP,HLOOKUPet les types de correspondance 0 et 1 deMATCH, de sorte que les classeurs qui répètent ces recherches classiques sur la même plage réutilisent le résultat du premier balayage pendant un passage de recalcul sous la même barrière de sécurité de stabilité de référence queXLOOKUP/XMATCH
Version 2.289.0
Added
- Le lecteur direct en flux gagne un mode facultatif
TrackColumnWidths: la feuille de calcul est mise en scène en mémoire pendant que les lignes arrivent en flux, de sorte que le fichier enregistré comporte l'indication<dimension>de plage utilisée et des largeurs par colonne ajustées au texte affiché le plus long rencontré (caractères plus remplissage, plafonnées à 255), approximant l'ajustement automatique pour les exports dont les données ne sont connues qu'au fur et à mesure du flux ; les largeurs de colonnes définies explicitement l'emportent toujours
Version 2.288.0
Added
- L'ouverture de packages XLSX tolère les préfixes d'espaces de noms non canoniques : les feuilles de calcul, les graphiques, les dessins et les parties de propriétés de document qui lient leurs éléments à un espace de noms préfixé différemment (ou strict ISO 29500) sont normalisés sur le vocabulaire standard pendant l'analyse, de sorte que les fichiers issus de générateurs tiers et d'enregistreurs en mode strict se chargent correctement
- Les feuilles de calcul dont les cellules omettent l'attribut de position
rplacent chaque cellule après son prédécesseur dans l'ordre de balayage, et les lignes sans attributrpoursuivent la séquence de lignes — la convention utilisée par plusieurs lecteurs en flux
Version 2.287.0
Added
Openlit les classeurs Excel 2.0/3.0/4.0 (BIFF2-4) : les flux BIFF bruts sans enveloppe OLE se chargent avec leurs nombres, textes, booléens, erreurs et résultats de formules mis en cache ; les résultats de chaîne des formules arrivent via l'enregistrement String BIFF2-4, et l'enregistrement de page de codes du flux pilote le décodage du texte
Changed
- Les documents BIFF2-4 sont lus pour leurs valeurs — les formats de nombre et les styles de ces générations ne sont pas modélisés, de sorte que les dates apparaissent comme des nombres de série bruts et les formules comme leurs dernières valeurs calculées
Version 2.286.0
Added
- Les formats de nombre avec sections de comparaison (
[>=100],[<0], …) sélectionnent la section selon la valeur partout où le texte affiché est restitué, en accord avec le comportement de mise en forme conditionnelle d'Excel - Les sections de texte des formats de nombre (
"ID:"@) servent de modèle aux valeurs de chaîne au lieu d'ignorer le format SetCellFromHtmlremplit une cellule à partir d'un fragment HTML léger :<b>/<strong>,<i>/<em>,<u>,<br>et<font color=...>deviennent des segments de texte enrichi ; les autres balises sont ignorées tandis que leur texte est conservé- Le balisage
TaggedTextaccepte les sauts de ligne<br>, les alias<strong>/<em>, la forme d'attribut<font color=...>et les entités"/ - Les blocs de maintien de colonnes ensemble (
KeepColumnsTogether) empêchent les sauts de page verticaux à l'intérieur d'un groupe de colonnes, reflétant la fonctionnalité au niveau des lignes dans la pagination, l'aperçu et la sortie PDF - Les contrôles de formulaire classiques Spinner et ScrollBar peuvent être créés dans les fichiers XLS avec les paramètres Min/Max/Inc/Page et une cellule liée, émis via le sous-enregistrement OBJ FtSbs
WriteAutoValuereconnaît les datesm/d/yyyyetd.m.yyyyavec heures facultatives (AM/PM inclus) au-delà de la forme ISO, en rejetant les dates de calendrier impossiblesConvertFormulasToValuesgagne un modeOnlyExternalqui fige uniquement les formules référençant d'autres classeurs, et la façade XLS classique gagne la méthode sur toute la feuille- L'ajustement automatique des lignes mesure les cellules fusionnées par rapport à leur largeur de colonne combinée et répartit la hauteur nécessaire sur les lignes fusionnées
Version 2.285.0
Added
- L'export PDF dessine les graphiques de feuille de calcul sous forme de graphiques vectoriels natifs : colonnes et barres groupées, empilées et 100 % empilées, graphiques en courbes avec marqueurs, graphiques en aires, graphiques en secteurs et en anneau avec étiquettes de pourcentage, nuages de points et graphiques radars — chacun avec un cadre titré, des axes à échelle automatique, des étiquettes de graduations, un quadrillage, une légende, des étiquettes de données facultatives par point, des remplissages pleins par série et la palette d'accentuation par défaut d'Excel ; les types de graphiques 3D sont restitués comme leur projection 2D
- Les graphiques ancrés au-delà de la dernière cellule étendent désormais la surface imprimée, de sorte qu'un graphique placé sous les lignes de données apparaît toujours dans la sortie PDF et d'aperçu au lieu d'être rogné
Version 2.284.0
Added
- Les en-têtes et pieds de page PDF restituent les codes de style d'Excel :
&Bgras,&Iitalique,&U/&Esoulignement simple/double,&Sbarré,&X/&Yexposant/indice,&nntaille de police,&Kcouleur et les mots-clés de graisse&"Font,Style" - L'export PDF respecte le mode d'impression noir et blanc de la feuille de calcul en réduisant les remplissages, polices, bordures, barres de données et icônes à un gris de luminance
- Les en-têtes de lignes et de colonnes imprimés (numéros de lignes et lettres de colonnes) sont restitués à côté de la grille lorsque la feuille le demande
- Centrage à l'impression :
CenterHorizontally/CenterVerticallydéplacent la grille imprimée entre les marges tandis que les bandes d'en-tête et de pied de page restent en place - Les commentaires de cellules s'impriment soit comme un indicateur de coin rouge (mode tel qu'affiché), soit comme une page de liste de commentaires après la feuille via la nouvelle propriété de feuille de calcul
PrintCommentsAtEnd, qui fait l'aller-retour de la valeur de mise en pagecellComments="atEnd"d'Excel - Les hyperliens internes (cibles
Sheet!Cell) deviennent des liens GoTo cliquables dans le document qui sautent vers la page de la feuille cible - L'exportateur expose une préférence de visionneuse
PageLayoutet écrit un paquet de métadonnées XMP en plus du dictionnaire d'informations du document - Les polices de collection TrueType (
.ttc) peuvent servir de police Unicode intégrée ; les graisses gras et italique de la fonte intégrée sont synthétisées lorsqu'une seule fonte régulière existe
Changed
- Les largeurs de colonnes sont converties via la formule de largeur maximale de chiffres d'Excel (métriques Calibri 11) au lieu d'une estimation fixe par caractère, de sorte que les largeurs PDF et d'aperçu correspondent aux largeurs en pixels stockées par Excel
- Les lignes enveloppées sont re-mesurées à partir du premier caractère de chaque ligne, corrigeant les lignes enveloppées qui ignoraient la largeur des mots déplacés vers le bas par une coupure antérieure
Version 2.283.0
Added
- L'export PDF enveloppe les cellules
WrapTextavec une vraie coupure de mots, un alignement horizontal ligne par ligne, un alignement vertical de bloc et un espacement justifié ou distribué - L'export PDF restitue le texte de cellule pivoté via des matrices de texte PDF, y compris le texte vertical empilé, et respecte
ShrinkToFiten réduisant progressivement la taille de police jusqu'à ce que la valeur tienne - Le texte PDF qui déborde d'une cellule s'étend désormais sur les cellules voisines vides et est rogné à la première cellule occupée, en accord avec le comportement d'impression d'Excel ; l'alignement général aligne les nombres à droite comme Excel
- L'export PDF dessine les segments de texte enrichi avec un style de police, une taille, une couleur, un soulignement, un barré, un exposant et un indice propres à chaque segment ; les lignes enveloppées conservent le style propre à chaque segment
- L'export PDF dessine les bordures diagonales de cellules et de véritables bordures à double ligne
- Le texte s'étendant sur des cellules fusionnées dessine, aligne, enveloppe et ancre désormais les hyperliens sur tout le rectangle fusionné, et les membres de fusion couverts ne peignent plus leur propre arrière-plan
Changed
- Les largeurs de texte PDF proviennent de tables d'avance calibrées par caractère au lieu d'une largeur moyenne de caractère fixe, de sorte que l'alignement, l'enveloppement et la réduction correspondent à la page imprimée
- L'indentation des cellules décale le texte comme Excel, et les cellules de jeux d'icônes indentent leur valeur à côté de l'icône
Version 2.282.0
Added
- L'export PDF préserve la transparence PNG : les images avec un canal alpha émettent désormais un plan de masque doux au lieu de perdre la transparence, y compris les images à palette avec un bloc tRNS
Changed
- Les flux de contenu de pages PDF sont désormais compressés Flate, réduisant considérablement la taille des documents exportés sans exigence de visionneuse au-delà de PDF 1.4
- L'export PDF regroupe les opérations de texte consécutives dans des blocs de texte partagés et omet la sélection redondante de police, de taille et de couleur, réduisant à la fois la taille de la sortie et le temps de génération
- Les cellules adjacentes avec le même remplissage plein sont restituées comme un seul rectangle fusionné, et les segments de bordure colinéaires avec le même style sont tracés en un seul trait au lieu de bords par cellule
- Les images PNG sont intégrées au PDF sans décodage ni ré-encodage, conservant le flux compressé d'origine et les pixels exacts
- Les images au contenu d'octets identique sont intégrées une seule fois et partagées, quel que soit le nombre d'objets image qui les référencent
Fixed
- Les annotations d'hyperliens sont désormais également créées pour les cellules de lien dont le texte est restitué via le chemin de police Unicode intégrée
- Les octets de contenu PDF ne dépendent plus de la page de codes système active, de sorte que le texte occidental se restitue de manière identique sur toute locale Windows
Version 2.281.0
Fixed
- Les lecteurs de presse-papiers ne tronquent plus le descripteur de données à 32 bits, ce qui faisait que
XLSGetClipboardBiff8et le chemin de collage XML Spreadsheet renvoyaient un résultat vide sur les applications 64 bits - Les opérations de presse-papiers réessayent d'ouvrir le presse-papiers pendant une demi-seconde au maximum lorsqu'une autre application le détient, au lieu d'échouer dès la première contention
Changed
- Les recherches de règles de mise en forme conditionnelle (chemins
FindAt/IndexOfCell) analysent la plage de cellules d’une règle une seule fois au lieu de le faire pour chaque cellule interrogée, en accord avec le cache de validation de données - L'export PDF construit un index d'hyperliens par feuille, remplaçant le balayage linéaire par cellule par une recherche binaire
Version 2.280.0
Added
- Les fonctions définies par l'utilisateur peuvent être enregistrées par nom :
RegisterUserFunctionachemine les formules appelant ce nom directement vers son gestionnaire (aucune chaîne if globale dans un seulOnUserFunction), l'événement de classeur continuant de servir les noms non enregistrés ScanUnknownFunctionsaudite un classeur à la recherche de fonctions de formule que le moteur de calcul ne peut pas évaluer, en signalant chaque cellule et chaque nom — idéal avant d'activer le recalcul sur des fichiers étrangersRecoveryMode: une partie de feuille de calcul structurellement endommagée est ignorée avec un diagnostic d'avertissement au lieu d'interrompre toute l'ouverture- Format de presse-papiers natif BIFF8 :
XLSSetClipboardBiff8/XLSGetClipboardBiff8publient et lisent le fluxBiff8qu'Excel lui-même utilise, de sorte que l'échange par presse-papiers conserve les valeurs, les formules et la mise en forme
Changed
- L'audit de validation de données analyse la plage de cellules de chaque règle une seule fois au lieu de le faire pour chaque cellule, accélérant
CheckDataValidationssur les grandes feuilles
Version 2.279.0
Added
- L'export PDF intègre les images de feuille de calcul : les bitmaps PNG/GIF/BMP sont convertis en XObjects RGB compressés Flate et les fichiers JPEG passent intacts via DCTDecode (sans recompression) ; les images identiques sur plusieurs pages partagent un même objet, et les images ajoutées sans taille explicite utilisent désormais leurs dimensions en pixels à 96 DPI
- Blocs de maintien ensemble :
KeepRowsTogetherempêche la pagination d'impression/PDF de casser à l'intérieur d'un bloc de lignes qui tient sur une page, etXlsxAutoPageBreakstransforme les limites de pages naturelles (tenant compte du maintien) en sauts de lignes explicites afin qu'Excel pagine comme l'export - Compression XLSX configurable :
ZipCompressionLevelsélectionne le niveau deflate pour les enregistrements (-1 par défaut jusqu'à 9) - Enregistrements reproductibles :
DeterministicOutputfige les horodatages des entrées zip afin qu'enregistrer deux fois le même classeur produise des fichiers identiques octet par octet
Fixed
- Les fichiers composés corrompus avec des chaînes FAT cycliques ne bloquent plus le chargeur .xls classique — les parcours de chaînes de répertoire et de flux portent des gardes de cycle
Version 2.278.0
Added
- L'export PDF émet des annotations de liens cliquables pour les hyperliens de feuille de calcul : les cellules portant une URL reçoivent un rectangle /Link invisible avec une action URI sur la zone de la cellule
- L'export PDF écrit un plan de document (signets) : chaque feuille de calcul exportée devient un signet pointant vers sa première page restituée
Version 2.277.0
Added
- La validation des données dispose désormais d'une API d'audit :
CheckDataValidationsanalyse les cellules renseignées par rapport aux règles de la feuille de calcul (appartenance à une liste, bornes entières/décimales/date/heure, longueur de texte, formules personnalisées via le moteur de calcul) et signale chaque cellule en échec avec l'index de la règle et une raison - Les propriétés de document personnalisées typées font l'aller-retour via
docProps/custom.xml: entrées texte, nombre, date et booléen surWorkbook.CustomProperties - Les parties de données XML personnalisées font l'aller-retour via
Workbook.CustomXmlPartsavec des relations et des types de contenu au niveau du classeur - Les images acceptent un compagnon SVG :
AddImagePairstocke les octets SVG à côté du repli matriciel, écrit l'extensionsvgBlipet la partie multimédia supplémentaire qu'Excel 2016 et ultérieur consomme - Les graphiques peuvent tirer le texte des étiquettes de données d'une plage de cellules (“Valeur à partir des cellules”) via
DataLabelsRange, émis comme extension de graphique et restauré à l'ouverture - Styles de tableau personnalisés :
Workbook.CustomTableStylesdéfinit des styles nommés avec des sections colorées ou en gras (ligne d'en-tête, ligne de totaux, bandes, colonnes de bord), écrits danstableStylesavec leurs propres styles différentiels afin que les tableaux puissent y faire référence par nom
Version 2.276.0
Added
- Remplissages en dégradé de cellules : les balayages linéaires par degré et les dégradés de chemin avec des couleurs par arrêt font l'aller-retour via
gradientFill, se restituent comme dégradés CSS dans l'export HTML, comme remplissages interpolés par bandes dans l'export PDF et la visionneuse de classeur, et sont proposés via le raccourciTXLSXFills.AddLinearGradient - Les formats de nombre de temps écoulé (
[h]:mm:ss,[mm]:ss,[s]) affichent désormais des totaux cumulés au lieu de boucler comme une horloge, dans chaque chemin d'affichage (FormattedText, HTML, PDF, valeurs de mise en forme conditionnelle) - Les formats de nombre en fraction (
# ?/?,# ??/??, dénominateurs fixes comme0/8) se restituent avec la meilleure approximation rationnelle d'Excel, y compris le masquage de la partie entière nulle et l'espacement d'alignement - Les crochets de couleur de style
[Red]apparaissent désormais viaTXLSXCell.GetFormattedTextColoret repeignent le texte de la cellule dans l'export PDF TXLSXWorkbook.ValidateNumberFormatvérifie une chaîne de format personnalisée comme le fait la boîte de dialogue Format personnalisé d'Excel — nombre de sections, équilibre des guillemets et contenu des crochets (couleurs, conditions, unités de temps écoulé, directives de locale)- L'état des volets figés peut être relu via
GetFrozenPanes, et la position de défilement du volet en bas à droite fait l'aller-retour viaSetPaneScroll/GetPaneScroll(écrite commetopLeftCell) - Le commutateur d'affichage des en-têtes de lignes et de colonnes
DisplayRowColHeadersfait l'aller-retour viashowRowColHeaders - Les graphiques exposent
DispBlanksAs(espace / relié / zéro) etPlotVisibleOnlyau lieu de les coder en dur, et restaurent les deux à partir du ChartML préservé à l'ouverture - Les commentaires portent une géométrie de zone modifiable (
WidthPt/HeightPt, points VML) ainsi qu'une heuristiqueAutoSizeFromTextpilotée par le texte
Version 2.275.0
Added
- Rechercher & remplacer comprend les caractères génériques d'Excel :
*(toute suite de caractères),?(exactement un caractère) et~comme échappement pour un*,?ou~littéral — la même sémantique qu'Excel applique lui-même dans Rechercher & remplacer, les critères de la familleCOUNTIFet les filtres automatiques - Le
FindTextde la feuille de calcul XLSX gagne une surcharge d'options : respect de la casse, correspondance sur tout le contenu de la cellule, recherche dans le texte de formule ainsi que dans les valeurs, mode générique et balayage arrière, avec une ancre de départ pour que les appels répétés parcourent les correspondances ReplaceTextgagne le même ensemble d'options plus un rappel facultatif par correspondance qui peut accepter, réécrire, ignorer ou abandonner chaque remplacement cellule par cellule- Les
FindText/ReplaceTextde la feuille de calcul XLS classique gagnent des surcharges à caractères génériques et sur cellule entière, de sorte que les deux façades partagent la sémantique de recherche d'Excel GetRangeStatisticsanalyse un rectangle et rapporte le minimum, le maximum, la somme, la moyenne, le nombre de valeurs numériques et le nombre de cellules renseignées en un seul passageWriteAutoValueécrit le texte comme la propre saisie de cellule d'Excel l'interprète :TRUE/FALSEdeviennent des booléens, les littéraux d'erreur comme#N/Adeviennent des valeurs d'erreur, les dates ISO non ambiguës deviennent des dates, les nombres simples au format invariant deviennent des nombres, et tout le reste — y compris les zéros de tête et les séparateurs de milliers — reste du texte (les deux façades)GetHtmlFromCellrestitue une cellule comme fragment HTML stylé avec balisage échappé, complétant l'export HTML de toute la feuilleSortRangeaccepte un drapeau insensible à la casse afin que les clés texte soient classées alphabétiquement quelle que soit la casse (façade XLSX)
Version 2.274.0
Added
- Les tableaux Excel font désormais l'aller-retour des tableaux sans ligne d'en-tête et des commentaires par tableau via les nouvelles propriétés de tableau
HasHeaderRowetComment, écrites commeheaderRowCount="0"et l'attributcomment - Les graphiques peuvent sélectionner un style de galerie Excel via la nouvelle propriété
ChartStyle(1–48 ou la plage étendue 101–148), avec aller-retour via l'élément de style de la partie graphique - Les graphiques combinés peuvent contrôler l'empilement de la zone de traçage via une nouvelle propriété
ZOrdersur chaque groupe de traçage, de sorte qu'une série de colonnes peut se restituer derrière ou devant une série de courbes - Les feuilles de calcul et les cellules isolées peuvent figer les formules en leurs valeurs calculées via
ConvertFormulasToValuesetConvertFormulaToValue, conservant le résultat mis en cache tout en supprimant la formule, le lien de formule partagée et les métadonnées de tableau - Les noms définis portent désormais un commentaire facultatif via la nouvelle propriété de nom
Comment, avec aller-retour via l'enregistrement classique de commentaire de nom et l'attributcommentde nom défini XLSX - L'export PDF accepte des dimensions de papier personnalisées en points via les nouvelles propriétés
PaperWidthetPaperHeight, remplaçant l'énumération de taille de papier pour chaque feuille de calcul restituée - L'export PDF peut supprimer la bande d'en-tête ou de pied de page via le nouvel ensemble
HidePrintObjects - Les codes de champ d'en-tête et de pied de page PDF
&F(nom de fichier) et&Z(chemin) se développent désormais en utilisant le chemin du classeur source capturé par les exports basés sur fichiers - Les barres de données prennent en charge une couleur de bordure de valeur négative indépendante via les nouveaux réglages
NegativeBorderColoretNegativeBarBorderColorSameAsPositive, émis dans l'extension de barres de données Excel 2010 et ultérieur - Les styles de cellule intégrés dont les identifiants n'ont pas d'emplacement d'enregistrement hérité (Hyperlink, Title, Headings, Accents, Good/Bad/Neutral, …) résolvent désormais leurs noms d'affichage canoniques à l'enregistrement, de sorte que la galerie de styles d'Excel survit à un aller-retour
- Les classeurs chiffrés Agile portent désormais un véritable bloc
dataIntegrity: l'écrivain émet un HMAC conforme à la spécification sur l'ensemble du package chiffré, et l'ouverture le vérifie, détectant un mot de passe erroné ou un package altéré ; les fichiers provenant d'écrivains sans ce bloc s'ouvrent toujours inchangés - Les classeurs classiques prennent en charge la réservation d'écriture “mot de passe à la modification” d'Excel via
SetModifyPassword(indicateur recommandation lecture seule, hachage de mot de passe hérité et nom d'utilisateur réservant émis comme paire d'enregistrements WRITEPROT + FILESHARING) ;IsWriteReservedrapporte l'état et un mot de passe vide l'efface - Une mémorisation facultative
RecalcLookupCacheaccélère le recalcul gourmand en recherches : les balayages répétés deXLOOKUP/XMATCHsur la même plage réutilisent le résultat du premier balayage. La mémorisation ne s'engage que lorsque le graphe de dépendances est prouvablement stable par référence (pas deOFFSET/INDIRECTni de références irrésolubles, pas de chaînes circulaires, pas de tables de données de simulation) et reste silencieusement désactivée sinon, de sorte que les résultats sont toujours identiques - Une mémorisation compagne
RecalcAggregateCacheaccélère le recalcul des agrégats conditionnels : les balayages répétés deSUMIF/COUNTIF/AVERAGEIFsur la même plage et les mêmes critères réutilisent le premier résultat, sous la même barrière de stabilité de référence et avec des résultats identiques - Les expressions
LAMBDAs'évaluent avec des fermetures complètes : un nom défini dont RefersTo est uneLAMBDApeut être appelé par nom avec des arguments (=MyFunc(5)), les fermetures se lient lexicalement dansLET(=LET(f, LAMBDA(x, x*2), f(21))), les paramètres masquent les références de colonnes du même nom, et le texte de formule fait l'aller-retour verbatim ; uneLAMBDAnue stockée comme résultat de cellule conserve le comportement d'omission sans valeur LETdispose désormais d'une sémantique complète : chaque liaison est visible des liaisons ultérieures et de l'expression de corps, y compris la compositionLETimbriquée — remplaçant l'ancienne implémentation partielle- Le texte de formule accepte désormais la virgule comme séparateur d'arguments à côté du point-virgule classique, en accord avec la syntaxe canonique d'Excel pour les formules collées et importées
- Les références structurées dans les formules s'évaluent désormais :
Table[Column],Table[[Column]], les plages de colonnes et les formes d'élément[#Data]/[#All]/[#Headers]/[#Totals]se résolvent par rapport aux tableaux Excel du classeur à l'analyse, de sorte que=SUM(Table1[Amount])calcule tandis que le texte de formule d'origine fait toujours l'aller-retour verbatim ; les références irrésolubles conservent le comportement précédent d'omission sans valeur et les formes de ligne courante ([@Column]) restent non prises en charge
Changed
- Lorsqu'un classeur désactive la précision totale, les résultats recalculés sont désormais stockés arrondis au nombre de décimales affiché par le format de nombre de chaque cellule, en accord avec le comportement “précision telle qu'affichée” d'Excel pour les valeurs calculées par HotXLS
- Les règles de mise en forme conditionnelle écrites en XLSX reçoivent désormais des priorités uniques à la feuille, éliminant les fichiers à priorités dupliquées qui faisaient demander une réparation à Excel
- Les mises en forme conditionnelles marquées comme limitées au tableau croisé dynamique via la nouvelle propriété
IsPivotsont routées vers le compartiment d'extensions au lieu du bloc principal de mise en forme conditionnelle de la feuille de calcul, où Excel les abandonnerait ou les déplacerait mal
Version 2.273.0
Changed
TXLSXWorkbook.PreserveRawPartscopie désormais les images de feuille de calcul inchangées, les images d'en-tête et de pied de page et les parties de graphiques avec leurs charges utiles compressées d'origine, tandis que les modifications de données d'image et de modèle de graphique empruntent le chemin de sérialisation- Un SaveAs de fichier réussi accepte désormais le package validé comme nouvelle base de copie brute, permettant aux enregistrements ultérieurs de réutiliser les données opaques nouvellement sérialisées, VBA, connexions, liens externes, images, graphiques, thèmes et charges utiles de tableaux croisés dynamiques sans rouvrir le package source précédent
Fixed
- Les relations de feuille de calcul et de dessin inconnues provenant de packages avec des emplacements de parties non standard sont désormais réalignées sur leurs propriétaires canoniques générés, y compris les packages de dessin seul dont les seules ancres sont des formes non prises en charge préservées
- Une copie de membre compressé en échec restaure désormais son en-tête local partiel, ses octets de charge utile, ses entrées de dossier parent et son compteur de répertoire central avant le repli de sérialisation sûr, empêchant les données inaccessibles de s'accumuler dans l'archive de sortie
Version 2.272.0
Changed
- Le SaveAs XLSX ouvre désormais une seule archive source validée pour l'opération d'enregistrement complète et copie chaque partie opaque inchangée atteignable par relation avec sa charge utile compressée d'origine, évitant les balayages répétés du répertoire central ainsi que la décompression et la recompression, tandis que les charges utiles modifiées empruntent toujours le chemin de sérialisation
Fixed
- Les relations de classeur inconnues provenant de packages dont le classeur utilise un nom de partie non standard sont désormais réalignées sur l'emplacement de classeur généré, empêchant leurs parties cibles préservées de devenir inaccessibles après SaveAs
- Les lectures directes projetées conservent désormais les définitions maîtresses de formules partagées en dehors de l'ensemble de lignes ou de colonnes sélectionné, de sorte que les cellules suiveuses sélectionnées reçoivent toujours leurs formules correctement traduites sans reconstruire les valeurs ou le texte enrichi non sélectionnés
- La modification d'un graphique ne supprime plus un format de nombre d'axe non modélisé simplement parce que la création de format de nombre d'étiquette de données utilise un élément portant le même nom local
Version 2.271.0
Fixed
- L'exportateur HTML classique écrit désormais de l'UTF-8 et le déclare avec une
<meta charset>plus un doctype HTML5 ; auparavant, le flux était écrit dans la page de codes ANSI du système, corrompant toute valeur de cellule non ASCII, et la déclaration de jeu de caractères manquante laissait la page à la merci du navigateur
Version 2.270.0
Added
- Les étiquettes de données de graphique peuvent désormais porter un format de nombre explicite et un emplacement via les nouvelles propriétés de série
LabelNumFmtetLabelPos(avec leurs drapeaux*Set), émis comme<c:numFmt>et<c:dLblPos>dans les écrivains de graphiques standard et combinés — permettant un texte d'étiquette en pourcentage ou en devise et des positions d'étiquette comme extrémité extérieure ou centre ; l'un ou l'autre réglage seul active aussi le bloc d'étiquettes, et les séries non définies restent identiques octet par octet
Version 2.269.0
Added
- Les séries de graphiques en courbes et en nuages de points peuvent désormais porter un symbole et une taille de marqueur explicites via les nouvelles propriétés
MarkerSymbol,MarkerSizeetMarkerSet, émises comme bloc<c:marker>de la série dans les écrivains de graphiques standard et combinés ; les séries non définies conservent des marqueurs automatiques - Les axes de valeurs avec unités d'affichage peuvent désormais afficher le libellé d'unité (“Milliers”, “Millions”, …) via la nouvelle propriété d'axe
ShowDispUnitsLabel
Version 2.268.0
Added
- Les courbes de tendance de graphiques XLSX prennent désormais en charge une ordonnée à l'origine fixe ainsi que des périodes de prévision avant et arrière via les nouvelles propriétés
Intercept/InterceptSet,ForwardetBackward, émises comme<c:intercept>/<c:forward>/<c:backward>; auparavant, seul le générateur de graphiques BIFF classique offrait ces contrôles, et les courbes de tendance non définies restent identiques octet par octet
Version 2.267.0
Added
- Le calcul de formules évalue désormais les fonctions de nombres complexes
IMCOS,IMSIN,IMTAN,IMSEC,IMCSC,IMCOT,IMLOG2etIMLOG10, complétant la famille d'ingénierieIM*avec la couverture trigonométrique, réciproque et logarithmique en base 2/base 10 sur les opérandes de chaîne complexes
Version 2.266.0
Changed
- Le lecteur direct en flux applique désormais la projection de colonnes avant d'accumuler les valeurs de cellule : lorsqu'un ensemble de colonnes projetées est configuré, les cellules en dehors de celui-ci sautent la construction de valeur, de formule et de chaîne de texte enrichi qui s'exécutait auparavant pour chaque cellule et était rejetée en fin de cellule, accélérant les lectures de feuilles larges qui ne projettent que quelques colonnes
Version 2.265.0
Added
- Les groupes de traçage de graphiques en barres et en colonnes exposent désormais un mode de regroupement configurable (
clustered,stacked,percentStacked), une largeur d'espace de groupe et un chevauchement de séries via les nouvelles propriétésBarGrouping,GapWidthetOverlap; auparavant, chaque graphique en barres/colonnes était codé en dur enclusteredsans contrôle d'espace ni de chevauchement, et les groupes non définis restent identiques octet par octet tandis que la liste de fusion après ouverture traite les nouveaux éléments comme possédés
Version 2.264.0
Fixed
- Les bordures de cellules PDF reflètent désormais le style et l'épaisseur de bordure de la feuille de calcul au lieu que chaque bordure soit dessinée comme une ligne continue identique de 0.75 pt : les cellules XLSX restituent les épaisseurs fine, moyenne, épaisse, cheveu et double ainsi que les motifs en pointillés, en tirets, tiret-point, tiret-point-point et tiret-point oblique, et les cellules BIFF restituent les styles fin, moyen et en tirets/pointillés
Version 2.263.0
Added
- L'export PDF peut désormais intégrer des métadonnées de document via les nouvelles propriétés
DocumentTitle,DocumentAuthor,DocumentSubjectetDocumentKeywords; lorsque l'une d'elles est définie, le PDF porte un dictionnaire/Infoavec ces champs plus une identitéCreator/Produceret uneCreationDate, tandis que les exports par défaut sans métadonnées restent identiques octet par octet
Version 2.262.0
Fixed
- L'export CSV ne met plus de guillemets excessifs aux champs : un espace interne ne force plus la mise entre guillemets, de sorte que des valeurs comme
John Smithsont écrites sans guillemets, en accord avec RFC 4180 et Excel ; les champs contenant le délimiteur, un guillemet double, un saut de ligne ou des espaces de tête ou de fin sont toujours mis entre guillemets comme avant
Version 2.261.0
Added
- Chaque série de graphique peut désormais porter une couleur de remplissage plein via la nouvelle propriété
SolidFillHex, émise comme propriétés de forme<c:spPr>de la série ; l'assignation d'une couleur hexadécimale marque la série d'une couleur de marque ou de palette au lieu de la couleur de thème automatique d'Excel, tandis que les séries non définies restent identiques octet par octet et que la liste de fusion après ouverture traitespPrcomme possédé de sorte qu'il remplace au lieu de dupliquer
Version 2.260.0
Changed
- Le moteur de stockage de cellules creux fait désormais croître géométriquement (en doublant) le tampon de chaque bloc de 256 lignes au lieu de réallouer à chaque cellule ajoutée, supprimant le coût de copie quadratique lors du chargement de feuilles de calcul denses
Version 2.259.0
Fixed
- Les enregistrements BIFF8 de protection d'objets de feuille de calcul (
OBJECTPROTECT) et de protection de scénarios (SCENARIOPROTECT) sont désormais relus dans l'état de protection de la feuille, de sorte que les drapeaux de verrouillage survivent à un aller-retour au lieu d'être écrits mais perdus au rechargement - Les enregistrements BIFF8 de globalités de classeur
MMS,RefreshAlletUseSelFSsont désormais préservés à travers l'aller-retour au lieu d'être silencieusement abandonnés
Version 2.258.0
Added
- Le texte d'affichage mis en forme reconnaît désormais les directives de couleur
[Cyan]et[Magenta]ainsi que les directives de palette indexée[Color1]à[Color8], de sorte que la sortie mise en forme de style HTML applique ces couleurs au lieu de les abandonner
Version 2.257.0
Added
- Le calcul de formules évalue désormais les fonctions d'ingénierie et de mathématiques
FACTDOUBLE,SQRTPI,DELTA,GESTEP,SERIESSUMetCONVERT,CONVERTcouvrant les unités de masse, distance, temps, pression, force, énergie, puissance, magnétisme, température et volume et rejetant les catégories d'unités incompatibles
Version 2.256.0
Fixed
- Le texte d'affichage mis en forme restitue désormais correctement les minutes dans les masques de temps comme
hh:mm,mm:sset[h]:mm:ss; auparavant, lemmde Delphi (mois) était utilisé, de sorte que les champs de minutes affichaient le numéro du mois - Les directives de locale et de devise telles que
[$-409]et[$$-1009]sont désormais retirées de la sortie mise en forme au lieu de fuir comme préfixe littéral$-409, tandis qu'un symbole de devise présent dans la directive est préservé
Version 2.255.0
Added
- La lecture de packages ZIP comprend désormais les archives ZIP64, analysant le champ supplémentaire d'informations étendues ainsi que l'enregistrement et le localisateur de fin de répertoire central ZIP64, de sorte que les classeurs dont les parties ou les décalages dépassent les limites classiques de 4 Go / 65535 entrées s'ouvrent correctement au lieu d'échouer à la vérification de cohérence de fin de répertoire central
Version 2.254.0
Security
- La vérification du mot de passe des classeurs chiffrés compare désormais le hachage de vérificateur en temps constant pour le chiffrement Agile et Standard, fermant un canal latéral temporel qui pouvait révéler combien d'octets de tête du hachage de mot de passe correspondent
- Le chiffrement Agile ne retombe plus sur un générateur pseudo-aléatoire initialisé par le temps pour les sels, les vérificateurs et les clés intermédiaires lorsque le CSPRNG système est indisponible ; il échoue désormais en mode sûr au lieu d'émettre un matériau de clé prévisible
Version 2.253.0
Added
- Le calcul de formules évalue désormais les fonctions de mise en forme de tableaux d'Excel 365
VSTACK,HSTACK,TOROW,TOCOL,WRAPROWS,WRAPCOLS,TAKE,DROP,CHOOSECOLS,CHOOSEROWS,EXPAND,RANDARRAYetTEXTSPLIT, en diffusant leurs résultats via le mécanisme existant de tableaux dynamiques - Le calcul de formules évalue désormais les fonctions de texte modernes
TEXTBEFOREetTEXTAFTERavec la gestion du numéro d'occurrence, de l'insensibilité à la casse, de la fin de correspondance et de la valeur en cas d'absence - Le calcul de formules évalue désormais
RANDBETWEEN,ISEVEN,ISODDet l'aliasFORECAST.LINEARdeFORECAST
Version 2.252.0
Added
- Les noms définis portent un commentaire facultatif, transmis sans perte sous forme d'enregistrement BIFF8 NAMECMT et d'attribut
commentdedefinedNameOOXML - Les cibles d'hyperliens de fichiers locaux sont normalisées (conversion des barres obliques inverses en barres obliques, préfixes
file://etfile:///, encodage en pourcentage des caractères réservés) afin qu'Excel les stocke telles quelles - Les types de remplissage des formes, images et zones de texte (uni, image, dégradé, aucun, automatique) sont désormais typés sur la propriété brute du type de remplissage et font un aller-retour fidèle
- Les barres de données de mise en forme conditionnelle prennent en charge les couleurs de bordure indépendantes des barres à valeurs négatives d'Excel 2010 et ultérieur
- Les champs de cache de tableau croisé dynamique transmettent sans perte la liaison de regroupement de dates et de nombres à plusieurs niveaux
- Les rappels de fonctions utilisateur reçoivent un descripteur du type d'argument afin que les gestionnaires puissent distinguer les valeurs littérales, les références de cellule ou de plage et les constantes de tableau
- La compilation de formules accepte les noms de fonctions localisés (allemand, français, espagnol), réécrits en anglais canonique avant l'analyse lexicale
- Les utilitaires de mot de passe et de chiffrement exposent des constantes nommées de codes de retour
Changed
- Les enregistrements de packages et XLSX passent désormais par des tampons deflate plus grands avec un niveau de mémoire de compression plus élevé et sautent un passage redondant de somme de contrôle sur les octets déjà compressés, réduisant le temps CPU et le temps réel d'enregistrement
- La croissance interne des générateurs de chaînes, des listes et des tables de hachage utilise désormais une allocation géométrique (par doublement) ainsi qu'un point de redimensionnement du hachage plus précoce, réduisant l'activité d'allocation et le coût de recherche lorsqu'un classeur comporte de nombreux styles, noms, plages définies ou chaînes partagées
- Les recherches dans la table des chaînes partagées comparent désormais directement les octets stockés avant de matérialiser une chaîne complète, réduisant les allocations de recherche sur les grandes tables de chaînes partagées
Version 2.251.0
Fixed
- L'ouverture et l'enregistrement XLSX conservent désormais les déclarations d'espaces de noms étrangères à la racine du classeur, les attributs de compatibilité de balisage, les charges utiles complètes
<extLst>au niveau du classeur et leurs relations inconnues tout en régénérant l'état typé du classeur ; les référencesr:idpréservées suivent la réaffectation des identifiants de relation au lieu de devenir obsolètes lorsqu'elles entrent en conflit avec les relations de feuille de calcul ou de classeur générées
Version 2.250.0
Changed
- Les entrées de lignes éparses XLSX ne stockent désormais que leur colonne et un descripteur de cellule stable, éliminant les balises de charge utile inutilisées ainsi que la classification redondante et une seconde recherche d'index de ligne chaque fois qu'une valeur de cellule, une formule ou un objet de texte enrichi change
Version 2.249.0
Added
- Les surcharges
TXLSRTFImport.LoadFromRTFetTXLSWorksheet.OpenRTFpeuvent importer des tableaux ou des listes de paragraphes à une ligne et une colonne cibles explicites commençant à 1, tandis que les surcharges d'origine continuent de démarrer en A1
Changed
- Les rédacteurs de lignes typés XLSX ajoutent désormais des lots strictement ordonnés directement aux vecteurs de lignes éparses pré-dimensionnés, et la recherche de cellules éparses résout les correspondances de première et dernière colonnes sans recherche binaire, tandis que les écritures en chevauchement conservent leur chemin de remplacement existant et leurs descripteurs de cellule stables
Fixed
- La copie brute de parties XLSX adossée à un fichier et le chargement sélectif de feuilles utilisent désormais une identité privée d'archive source avec validation de la taille et de l'horodatage, de sorte qu'une ouverture de flux ultérieure ou une affectation publique de
FileNamene peut pas rediriger les parties préservées vers un autre classeur RefreshPivotCachebascule désormais les caches actualisés vers la sérialisation typée afin que les enregistrements reconstruits ne puissent pas être écrasés par des octets bruts obsolètes du package lors de l'enregistrement- La copie brute de ZIP compressé exige désormais que le flux source contienne exactement le nombre d'octets compressés déclaré, rejetant les entrées tronquées comme surdimensionnées avant l'enregistrement dans le répertoire central
- La réutilisation d'un importateur RTF réinitialise désormais l'état du parseur de pages de codes et de formats de caractères entre les documents, de sorte que le gras, l'italique, le soulignement, le barré et la taille de police ne peuvent pas s'infiltrer dans l'import suivant
- Les ouvertures XLSX
MetadataOnlyévitent désormais les chaînes partagées, les personnes, les relations de feuille de calcul, les commentaires, les dessins, les graphiques, les tableaux, les tables de requête, les tableaux croisés dynamiques et les charges utiles opaques accessibles depuis les feuilles de calcul, tout en conservant les propriétés du classeur, les noms, les états de feuille, les styles, le thème, les connexions et les liens externes
Version 2.248.0
Changed
- L'enregistrement sous XLSX copie désormais en brut les parties
connections.xmlinchangées du package source lorsque le modèle de connexions analysé est inchangé, préservant la fidélité du XML source et évitant une décompression et une recompression inutiles tout en continuant à réécrire les connexions modifiées à partir du modèle typé
Version 2.247.0
Changed
- L'enregistrement sous XLSX copie désormais en brut le XML des liens externes et les parties de relations inchangés du package source lorsque le modèle analysé est inchangé, préservant le XML d'extensions inconnues et évitant une décompression et une recompression inutiles tout en continuant à réécrire les liens modifiés à partir du modèle typé
Version 2.246.0
Added
- Les surcharges
TXLSHTMLImport.LoadFromHTMLpeuvent importer à une ligne et une colonne cibles commençant à 1, sélectionner une table de premier niveau commençant à 0 ou toutes les tables, et analyser les nombres avec un séparateur décimal explicite sans modifier les paramètres de format globaux
Changed
- Le chargement des styles XLSX résout désormais chaque style de cellule via un tableau partagé immuable cellXf au lieu de constructions répétées de clés de chaîne et de recherches linéaires dans la map, réduisant le temps d'ouverture des classeurs stylés et les allocations temporaires
Fixed
- Les octets modifiés du projet VBA contournent désormais la copie brute des parties préservées, de sorte que l'enregistrement d'un classeur à macros modifié ne peut pas restaurer la charge utile d'origine
vbaProject.bin - La copie brute de membres ZIP rejette désormais les méthodes de compression autres que STORE et DEFLATE au lieu d'émettre un en-tête de compression incohérent, permettant aux appelants d'utiliser une décompression sûre et des chemins de repli de réécriture
- L'import HTML ignore désormais les balises de lignes et de cellules en dehors des tables de premier niveau et préserve le comportement établi de toutes les tables des surcharges d'origine
Version 2.245.0
Added
- Des cellules
TXLSWorkbookViewermodifiables avec une saisie tenant compte des cellules protégées, la saisie et le recalcul de formules, la sélection rectangulaire de plages, la sélection de références de formules et un historique circulaire borné d'annulation et de rétablissement TXLSPivotDesignerfournit un modèle réutilisable non visuel de liste de champs avec des zones de lignes, de colonnes, de filtres et de valeurs, un déplacement déterministe des champs, la sélection d'agrégations, la validation de la mise en page et l'application des résultats- Les classeurs XLS classiques fournissent désormais des diagnostics
CalculateAndVerifyavec des enregistrements de divergence partagés contenant l'identité de la feuille de calcul, les coordonnées de cellule commençant à 1, les valeurs mises en cache et fraîchement calculées, et le texte de la formule - Les feuilles de calcul XLS classiques et XLSX fournissent désormais des rédacteurs typés de lignes et de colonnes numériques, de chaînes et de variantes avec des coordonnées commençant à 1, le rognage aux limites de la grille, des écritures directes dans le modèle de cellule et un nombre d'écritures retourné
Changed
- Le rendu de la visionneuse XLSX préserve désormais les feuilles de calcul éparses en évitant la matérialisation des cellules vides pendant le repeint et la résolution des styles
TXLSXWorksheet.ReplaceTextvisite désormais les cellules stockées directement en temps linéaire sans copier ni trier la collection complète de cellules
Fixed
- La lecture et l'écriture RC4 et RC4 CryptoAPI du XLS classique préservent désormais chaque corps d'enregistrement en clair requis par
[MS-XLS], gardentBoundSheet8.lbPlyPosnon chiffré, consomment les positions de flux de clé correspondantes et activent le déchiffrement avant de lire le premier enregistrement chiffré aprèsFILEPASS - La sérialisation SpreadsheetML n'applique désormais le codec symétrique
_xHHHH_qu'aux champs Xstring, tandis que les formules et la syntaxe de référence utilisent l'échappement XML ordinaire afin que les littéraux en forme de jetons conservent leur signification exacte de formule
Version 2.244.0
Added
- Import de presse-papiers multi-format :
XLSPasteFromClipboardRichprivilégie le format de presse-papiers XML Spreadsheet (porteur de formules, de styles et de fusions) au texte Unicode brut, avecXLSClipboardHasXmlSpreadsheet,XLSGetClipboardXmlSpreadsheetetXLSParseXmlSpreadsheetpour la détection du format, l'extraction et l'analyse SpreadsheetML 2003
Version 2.243.0
Added
- Noms définis externes :
TXLSXExternalLinkanalyse, stocke et transmet sans perte les entrées<definedNames>(nom + refersTo) des liens de classeurs externes, avec un accès parAddDefinedName,FindDefinedNameetDefinedNames[]indexé - État d'échec d'actualisation par feuille : chaque
TXLSXExternalSheetDataporte un indicateurRefreshErrorqui enregistre si la dernière tentative d'actualisation a échoué, analysé à partir de l'attributrefreshErroret émis vers celui-ci
Version 2.242.0
Added
TXLSXWorkbook.PreserveRawPartscopie la représentation compressée des parties inchangées (thème, projet VBA, tableaux croisés dynamiques et caches de tableaux croisés dynamiques) directement depuis l'archive source lors de l'enregistrement sous, évitant la décompression et la recompression des entrées opaques préservées
Version 2.241.0
Added
- La propriété
TXLSXWorkbook.SelectedSheetspermet le chargement sélectif de feuilles de calcul : Open n'analyse le XML des cellules que pour les feuilles nommées dans la liste, tandis que les autres feuilles conservent leurs noms et leurs états de visibilité avec zéro cellule. AppelezLoadSheet(Index)pour matérialiser à la demande une feuille ignorée depuis l'archive d'origine
Version 2.240.0
Added
- Le mode d'ouverture
TXLSXWorkbook.MetadataOnlyanalyse les propriétés du classeur, les noms définis, les noms de feuilles et leurs états de visibilité, les styles, le thème, les connexions et les liens externes, mais ignore tout le XML des cellules des feuilles de calcul et les parties satellites pour une découverte rapide des propriétés et des noms dans les grands classeurs
Version 2.239.0
Added
- Stockage compact des cellules par blocs de 256 lignes avec des descripteurs publics stables, une sérialisation par lignes adaptée au cache et une compaction des styles dans tous les pools du classeur avant chaque enregistrement
- Les superpositions de styles par intervalles permettent à la mise en forme des lignes, des colonnes et des rectangles de rester compacte sans matérialiser d'objets de cellule vides, se résolvent paresseusement à l'accès aux cellules, survivent aux modifications structurelles et se transmettent sans perte sous forme d'entrées de cellules compactes de colonnes, de lignes et de styles uniquement
Changed
- L'enregistrement normal d'un classeur diffuse désormais chaque ligne de feuille de calcul directement dans le flux deflate du package, de sorte que la mémoire de pointe suit la plus grande ligne individuelle plutôt que le XML complet de la feuille de calcul
- Les chaînes partagées et les parties XML auxiliaires sont désormais diffusées une entrée à la fois via un sérialiseur UTF-8 réutilisable unique, bornant la mémoire de pointe par la plus grande entrée au lieu de la partie entière
Version 2.238.0
Added
TXLSPaginationModelconstruit des pages logiques réutilisables pour les plages, feuilles de calcul et classeurs XLS et XLSX avec la géométrie du papier, les marges, les en-têtes, les pieds de page, les bandes de lignes et de colonnes, les titres répétés, l'ordre des pages, la politique de quadrillage et les emplacements des dessinsTXLSWorkbookViewerfournit désormais un aperçu d'impression à modèle partagé, la navigation de pages au clavier et à la molette, un accès en cache auPaginationModel, unRefreshPaginationexplicite et une sortie EMF de la page sélectionnéeTXLSPDFExport.CreatePaginationModelexpose le modèle de pages détenu exact utilisé par le décompte et le rendu PDF pour les six types d'entrées XLS et XLSX
Changed
- L'export PDF et le décompte des pages consomment désormais un seul moteur de pagination au lieu de maintenir des boucles de pages XLS et XLSX séparées
- La mise à l'échelle ajuster à la largeur et ajuster à la hauteur se résout désormais par rapport aux bandes de pages réelles, y compris les sauts manuels et les titres répétés, dans la plage d'échelle de 10 % à 400 % d'Excel
Version 2.237.0
Added
TXLSFormulaDebuggercrée une session interactive détenue contenant l'arbre d'expressions analysé, les plages sources, les opérateurs, les nœuds et valeurs d'opérandes, les résultats intermédiaires, un ordre d'évaluation déterministe et un état navigable de l'étape courante- Les sessions de débogage de formules exposent les dépendances de cellules et de plages avec des coordonnées de feuille résolues, signalent les branches sélectionnées et ignorées pour
IF,IFERROR,IFNA,CHOOSE,IFSetSWITCH, et préservent les erreurs internes récupérées avec leur nœud d'origine
Changed
- Les
Calculatede classeur et de feuille de calcul renvoient désormais les échecs de formules Excel sous forme de valeurs d'erreurVariantstandard au lieu de les convertir enNull TXLSFormulaTracerenregistre désormais les piles d'opérandes exactes avant et après pour les étapes d'empilement et de réduction
Version 2.236.0
Added
TXLSXWorksheet.StructuralEditRegistrypermet désormais aux métadonnées de feuille de calcul appartenant à l'application de participer aux insertions ou suppressions de lignes et de colonnes viaIXLSXStructuralEditParticipant
Changed
- Les modifications structurelles XLSX achèvent désormais leur travail sensible aux références dans une seule transaction protégée couvrant les formules, les noms, les validations, les mises en forme conditionnelles, les commentaires, les hyperliens, les dessins, les tableaux, les requêtes, les scénarios, les tables de données, les paramètres d'impression, les graphiques sparkline, les caches et vues de tableaux croisés dynamiques et les extensions de feuille de calcul
Fixed
- Les lignes et colonnes insérées ou supprimées mettent désormais à jour les plages protégées, les ancres de commentaires filetés, le VML des commentaires classiques réouverts, les références de graphiques sparkline locales et inter-feuilles, les sources et ancres typées de tableaux croisés dynamiques, les formules calculées de tableaux croisés dynamiques et les références reconnaissables dans le XML d'extensions de feuille de calcul préservé
Version 2.235.0
Added
TXLSDirectWriterajoute désormais des commentaires classiques, des images de feuille de calcul ancrées, des graphiques de colonnes, à barres, en courbes, en aires, en secteurs, en anneau et en nuages de points adossés à des formules, ainsi qu'un ChartML complet fourni par l'appelant, sans construire un modèle d'objet de classeur complet- Les images peuvent être fournies sous forme d'octets, de flux adressables avec transfert de propriété facultatif ou de chemins de fichiers, et peuvent utiliser du contenu PNG, JPEG, GIF, BMP, EMF ou WMF
Changed
- Les parties riches du rédacteur direct utilisent des descripteurs de canal latéral de la feuille courante, affectent les identifiants de relations de feuille de calcul avant la fermeture de la feuille et diffusent les médias et les parties XML associées après le XML de la feuille de calcul pour garder la mémoire des lignes indépendante de la taille de la feuille
Version 2.234.0
Added
TXLSDirectReaderexpose désormais des événements facultatifs de dimension, de format de feuille, de colonne, de ligne, de volet et de plage fusionnée avec des enregistrements de mise en page typés- Les événements de colonnes et de lignes signalent les largeurs ou hauteurs, l'état masqué et réduit, les niveaux de plan et les index de styles source sans construire d'objets de cellule de feuille de calcul
Changed
- Les rappels de mise en page affectés utilisent un passage de métadonnées à mémoire bornée avant la livraison des cellules, garantissant que les plages fusionnées et les autres faits de mise en page arrivent avant les cellules qui en dépendent, tandis que les analyses ordinaires de cellules uniquement conservent le chemin d'origine à passage unique
- Les lectures directes parallèles maintiennent les rappels de mise en page sur le thread appelant et terminent les métadonnées de la feuille sélectionnée avant de vider les files ordonnées de cellules des travailleurs
Version 2.233.0
Added
TXLSXChartTextStylefournit désormais des noms de polices typés pour les titres de graphique, les légendes, les titres d'axes et les étiquettes d'axes, avec tailles de points, couleurs RVB, emphase et rotation du texteTXLSXChartLayoutfournit désormais un positionnement normalisé manuel de la zone de traçage, du titre du graphique, des titres d'axes et de la légende avec des modes explicites de bord ou de facteur et des cibles de traçage intérieures ou extérieures- Les graphiques exposent désormais des contrôles typés de visibilité, de position, de superposition, de style de texte et de mise en page de la légende ainsi que des paramètres de superposition du titre du graphique
Changed
- Les mises en page manuelles sérialisent toujours des groupes complets x, y, largeur et hauteur à l'aide de modes par défaut compatibles Office afin qu'Excel ne rejette pas des coordonnées partielles ou conflictuelles
Fixed
- La modification de polices ou de mises en page de graphiques typés préserve les listes d'extensions non liées et le contenu d'espaces de noms personnalisés, tandis que l'effacement d'une propriété connue de couleur ou d'emphase ne restaure plus la valeur importée lors de la fusion structurelle
Version 2.232.0
Added
TXLSXImageexpose désormais des bords de recadrage en pourcentage, la transparence, la luminosité, le contraste, la rotation en degrés et des modes de remplissage en étirement ou en mosaïqueTXLSXImage.HasPreservedXmlindique si le DrawingML importé est disponible, tandis queClearPreservedXmlfait opter une image pour une régénération propre du modèle typé
Changed
- Les valeurs d'effets d'image utilisent un stockage compact en virgule fixe et écrivent des unités DrawingML natives sans allouer d'objets d'assistance par effet
Fixed
- La modification d'une propriété prise en charge sur une image importée préserve désormais les extensions non liées, les choix de compatibilité de balisage, les attributs personnalisés, les effets de forme et le contenu qualifié par espace de noms
Version 2.231.0
Added
- Les graphiques XLSX importés préservent désormais leur ChartML d'origine lorsque
TXLSXWorkbook.PreserveUnsupportedPartsest activé, en conservant les espaces de noms inconnus, les alternatives de compatibilité de balisage, les listes d'extensions, les styles personnalisés et la mise en forme non modélisée TXLSXChart.HasPreservedXmlindique si le ChartML d'origine est disponible, etClearPreservedXmlpermet aux applications de faire opter un graphique pour une régénération propre du modèle typé
Changed
- L'enregistrement d'un graphique importé non modifié rejoue son ChartML d'origine, tandis que les modifications de propriétés prises en charge superposent structurellement uniquement les nœuds de graphique modélisés et conservent en place le contenu non lié
Fixed
- La modification d'un titre de graphique, d'une série, d'un axe ou d'une autre propriété prise en charge ne rejette plus les extensions non liées créées par Excel, le contenu alternatif, les styles ou la mise en forme de la partie graphique
Version 2.230.0
Added
TXLSXChart.AddPlotGroupconstruit désormais des graphiques combinés ordonnés dont les familles de graphiques et les séries conservent des affectations d'axes primaires ou secondaires indépendantes- Les graphiques exposent désormais les axes de catégories et de valeurs primaires et secondaires ainsi qu'un axe de séries, avec des paramètres typés de catégories, de valeurs, de dates et d'axes de séries incluant les positions, les identifiants, les croisements, les unités de dates, les intervalles d'étiquettes et la visibilité
- Les graphiques de colonnes, à barres, en courbes, en secteurs et en aires disposent désormais de types de graphiques 3D dédiés avec rotation, hauteur, profondeur, perspective, axes à angle droit et profondeur d'écart configurables
- Les séries exposent désormais des caches typés de chaînes et de nombres pour les noms, les catégories, les valeurs et les tailles de bulles, y compris les index de points épars et les codes de format numérique
Changed
- Les API de compatibilité
ChartType,AddSeriesetSeriesplate continuent de viser le groupe de traçage principal tandis que le modèle de graphique conserve chaque groupe de traçage ordonné
Fixed
- L'ouverture et le réenregistrement de graphiques combinés ne les réduisent plus à une seule famille de graphiques et ne perdent plus les axes secondaires, de dates ou de séries
- Les références de formules de graphiques et les valeurs de séries mises en cache survivent désormais aux copies de classeurs et aux cycles d'ouverture/enregistrement sans être aplaties ni rejetées
- Les ancres de graphiques sont désormais appariées à leurs parties de graphiques par identifiant de relation, de sorte que les applications qui réordonnent les entrées de relations ne permutent plus les contenus de graphiques entre les positions des feuilles de calcul
Version 2.229.0
Added
TXLSXWorksheet.HeaderFooterImagescrée, recherche, remplace et supprime désormais des emplacements d'image typés pour chaque position gauche, centrale et droite d'en-tête ou de pied de page sur les pages impaires, paires et premières- Les images d'en-tête et de pied de page exposent leurs données brutes, leur format, leur titre, leurs dimensions en points et leurs marges en points, avec un chargement direct depuis les fichiers PNG, JPEG, GIF, BMP, EMF et WMF
Changed
- Les images de pages paires et de première page activent automatiquement les variantes de page correspondantes et maintiennent les codes de champ d'image requis lorsque le texte d'en-tête ou de pied de page est modifié
Fixed
- Les commentaires de feuille de calcul et les images d'en-tête ou de pied de page conservent désormais des relations VML indépendantes lorsqu'ils partagent une même feuille de calcul
- Les emplacements d'images d'en-tête et de pied de page créés par Excel conservent désormais leurs octets d'image, formats, titres, dimensions, marges et relations à travers les cycles d'ouverture et d'enregistrement
Version 2.228.0
Added
- Les feuilles de calcul XLS classiques et les collections de formes créent et découvrent désormais des contrôles typés
TXLSButtonetTXLSRadioButtonà côté des cases à cocher, zones de liste déroulante et zones de liste - Les contrôles de formulaire exposent désormais les noms de macro, les cellules liées, les plages d'entrée, les états de coche, l'apparence plate ou 3D et les liens de groupe d'options via des propriétés typées
- Les noms définis exposent
IsMacroafin que les liaisons de macro conservent les métadonnées de nom de classeur requises
Fixed
- La modification et la réenregistrement des contrôles de formulaire classiques ne suppriment plus les états de coche, les liaisons de macro, les formules de cellules liées, les plages sources ou les métadonnées de groupe d'options prises en charge
- L'effacement d'une plage source de zone de liste déroulante ou de zone de liste supprime désormais la formule d'entrée sérialisée au lieu de restaurer la plage précédente à la prochaine ouverture
Version 2.227.0
Added
LINESTetLOGESTretournent désormais des tableaux de coefficients multivariables complets et des matrices statistiques facultatives à cinq lignesTRENDetGROWTHretournent désormais des tableaux de prédiction mis en forme pour les entrées à variable unique et multivariables
Changed
- L'arithmétique de tableau, les comparaisons, la concaténation, la négation unaire et les opérations en pourcentage diffusent désormais les scalaires ainsi que les lignes ou colonnes singleton tout en conservant les résultats par cellule
- Les dépendances de calcul développent désormais les noms de classeur et de feuille de calcul imbriqués, les noms définis par formule et les références multi-zones avec une protection de cycle sensible à la portée
Fixed
- Une erreur dans un élément de tableau ne réduit plus le résultat complet et ne bascule plus incorrectement vers une évaluation scalaire
- Les noms définis par formule dont les dépendances peuvent être résolues statiquement ne forcent plus un recalcul complet volatil inutile
Version 2.226.0
Added
- Les caches pivot XLSX existants et les vues de tableaux croisés dynamiques se chargent désormais dans le modèle typé via les relations de package, y compris les enregistrements de cache, les champs, les éléments partagés, le regroupement, les filtres, les formats, les définitions calculées et les extensions
TXLSPivotTable.Makeévalue désormais les champs de cache calculés, les éléments calculés et les membres de données calculés avec une liaison de noms sensible aux dépendances- Les modes
ShowDataAsétendus ajoutent des pourcentages parents, des pourcentages cumulés et un rang croissant ou décroissant avec un balisage d'extension XLSX valide
Changed
- La génération de résultats pivot applique désormais la visibilité des éléments, les sélections de page et les filtres de légende, de date, d'agrégat et de valeur avant de construire les domaines groupés
- Les groupes numériques, de date et discrets, le tri par étiquette ou valeur de données, les sous-totaux configurés et les lignes ou colonnes de total général matérialisées facultatives participent désormais à la génération de résultats
Fixed
- Les filtres pivot utilisent désormais un balisage de filtre au niveau racine valide par schéma et des types de filtres symboliques au lieu de valeurs numériques ambiguës
- Le chargement piloté par les relations ne suppose plus des noms de parties conventionnels ou séquentiels de cache pivot, d'enregistrement de cache ou de tableau croisé dynamique
Version 2.225.0
Added
TXLSXWorkbook.ConnectionsetTXLSXWorksheet.QueryTablesfournissent désormais une création et une édition typées pour les métadonnées des bases de données externes, du Web, du texte et des résultats de requête- Les paramètres de connexion conservent leur type exact Boolean, entier, à virgule flottante, chaîne ou référence de cellule, y compris les valeurs explicites zéro, false et chaîne vide
Changed
- L'ouverture et l'enregistrement XLSX résolvent et écrivent désormais les parties de connexion et de tables de requête via leurs relations propriétaires, synchronisent les tables de résultats et les noms définis, et préservent les attributs inconnus, les nœuds enfants et les listes d'extensions
- Les modifications de lignes et de colonnes maintiennent les plages de résultats de requête alignées, tandis que les copies de feuilles de calcul au sein du même classeur et entre classeurs préservent la propriété des requêtes et remappent les identifiants de connexion et les noms en conflit
Fixed
- Les tables de requête peuvent coexister avec les tables standard, les commentaires filaires et les tableaux croisés dynamiques sans collisions d'identifiants de relation de feuille de calcul ou de classeur
Version 2.224.0
Added
- Les feuilles de calcul XLS classiques et les feuilles de calcul XLSX modernes exposent désormais
AddDataTableetDataTablespour les tables de données What-If à une variable en ligne, une variable en colonne et à deux variables
Changed
- Le recalcul du classeur évalue chaque résultat de table de données avec un contexte d'entrée isolé, y compris les dépendances de formule indirectes, et préserve les définitions ainsi que les résultats mis en cache à travers l'ouverture, l'enregistrement, la copie de feuille de calcul et les modifications structurelles de lignes ou de colonnes
Fixed
- Les cellules d'entrée What-If supprimées produisent désormais des résultats
#REF!, et le recalcul classique du classeur visite chaque feuille de calcul au lieu d'omettre la première feuille - L'insertion de lignes en haut d'une feuille de calcul classique ne risque plus une violation d'accès sur Win64
Version 2.223.0
Changed
- L'annulation du lecteur direct parallèle se propage désormais à travers les lectures actives des membres ZIP et chaque étape de décompression au lieu d'attendre le prochain pull XML
Fixed
- L'abandon d'une analyse parallèle de feuille de calcul n'attend plus qu'une lecture XML compressée volumineuse soit terminée avant que les workers bloqués ne soient libérés
Version 2.222.0
Added
TXLSDirectReader.ParallelBufferMemoryLimitlimite la charge utile agrégée de la file de cellules brutes pour l'analyse parallèle des feuilles de calcul, tandis queParallelPeakBufferedBytesexpose le pic mesuré pour les diagnostics et les tests de capacité
Changed
- Les lectures directes parallèles diffusent désormais les entrées ZIP des feuilles de calcul dans des lecteurs XML locaux au worker et des files producteur-consommateur bornées au lieu de conserver l'intégralité du XML décompressé de la feuille et des tampons de cellules complets par feuille
- Les feuilles de calcul actives reçoivent des budgets de file indépendants et sont traitées dans des fenêtres de la taille du worker, préservant l'ordre des rappels sans permettre aux feuilles ultérieures de priver de ressources la feuille actuellement émise
Fixed
- Les abandons de cellules, les échecs de rappel et les erreurs de worker réveillent désormais les producteurs et consommateurs bloqués, arrêtent coopérativement les pulls XML, joignent tous les workers et laissent le lecteur direct réutilisable
Version 2.221.0
Changed
- L'ouverture de XLSX multi-feuilles diffuse désormais chaque entrée ZIP de feuille de calcul directement dans son décompresseur et lecteur XML locaux au worker au lieu de conserver le XML décompressé de la feuille avant l'analyse
- Les lecteurs simultanés de feuilles de calcul sérialisent uniquement de courtes lectures positionnées depuis la source du package, de sorte que la décompression et l'analyse XML restent parallèles tandis que la mémoire d'entrée transitoire de la feuille est limitée par le nombre de workers actifs
Version 2.220.0
Added
- La génération des résultats de tableau croisé dynamique exécute désormais les neuf modes classiques
ShowDataAs, y compris différence, pourcentage d'un élément de base, différence en pourcentage, cumul, pourcentage de ligne, pourcentage de colonne, pourcentage du total et calculs d'index xlPivotBaseItemPreviousetxlPivotBaseItemNextfournissent des sélecteurs typés pour les éléments de base adjacents dans les calculs de comparaison
Changed
- Les pourcentages de tableau croisé dynamique et les valeurs d'index utilisent les totaux de ligne, de colonne et généraux agrégés directement à partir des enregistrements sources, en préservant la sémantique correcte de Average, Product, Count, variance et écart-type sans réanalyser la source
- Les cumuls suivent l'ordre des éléments de tableau croisé dynamique, se réinitialisent indépendamment pour chaque groupe homologue et conservent un stockage éparse des résultats pour les tableaux à cardinalité élevée
Fixed
- Les enregistrements BIFF8
SXDIutilisent désormais la disposition fixe standard de 14 octets et préserventShowDataAs, le champ de base, l'élément de base, le format numérique et le nom d'affichage via des lectures typées, tandis que les enregistrements HotXLS hérités restent lisibles - Les champs de données XLSX écrivent désormais des index de champ de tableau croisé dynamique, mappent les sélecteurs précédent et suivant vers les valeurs OOXML requises et émettent les attributs de base uniquement pour les modes qui les utilisent
- Les cellules de comparaison manquantes restent vides, tandis que les dénominateurs zéro présents renvoient
#DIV/0!au lieu d'être confondus avec des données manquantes
Version 2.219.0
Fixed
VDBapplique désormais l'amortissement dégressif variable sur des périodes fractionnaires, passe à l'amortissement linéaire lorsqu'il est avantageux et honoreno_switch- Les facteurs nuls, les limites de récupération, les périodes de départ fractionnaires et les plages de périodes invalides suivent désormais des résultats compatibles avec Excel au lieu d'arrondir les périodes et de renvoyer une approximation d'amortissement dégressif simplifiée
Version 2.218.0
Added
TXLSXWorksheet.Scenariosfournit désormais la création typée du gestionnaire de scénarios What-If avec des scénarios nommés, des index actifs et affichés, des plages de cellules variables, des métadonnées d'utilisateur et de commentaire, des états verrouillé et masqué, et des valeurs de cellules d'entrée possédées- Les définitions de scénario suivent désormais les copies de feuille de calcul et les éditions structurelles de ligne ou de colonne, tandis que les limites de compatibilité Excel sont validées avant que des métadonnées invalides puissent être écrites
Fixed
- L'ouverture et l'enregistrement de scénarios créés par Excel préservent désormais les attributs racine et les cellules d'entrée imbriquées au lieu d'aplatir la hiérarchie en XML brut avec perte
- Les éléments de feuille de calcul Scénario, AutoFilter, consolidation des données, cellules fusionnées et phonétiques utilisent désormais l'ordre du schéma afin que les consommateurs de feuille de calcul stricts ne nécessitent pas de passe de réparation
Version 2.217.0
Added
TXLSXWorksheet.IgnoredErrorsfournit désormais une création typée pour chaque catégorie d'erreur ignorée standard avec des références multi-zones, la prise en charge de la copie de feuille de calcul, les mises à jour d'édition structurelle et les allers-retours ouverture/enregistrementTXLSXWorkbookexpose désormais le mode de référence, le recalcul à l'enregistrement, la précision complète, le calcul simultané et les paramètres de concurrence manuelle, en plus de ses options de calcul existantes
Fixed
- Chaque paramètre de calcul de classeur non défini par défaut produit désormais et effectue l'aller-retour d'un élément
calcPrordonné selon le schéma, y compris les limites d'itération configurées avant l'activation de l'itération - Les modes de calcul, les modes de référence, les limites d'itération, les identificateurs de calcul et les compteurs de concurrence manuelle rejettent ou normalisent désormais les valeurs non valides au lieu d'écrire un état de classeur ambigu
Version 2.216.0
Changed
XMATCHetXLOOKUPeffectuent désormais des recherches binaires logarithmiques ascendantes ou descendantes lorsqu'elles sont demandées, y compris les limites de doublons et de correspondance approximative compatibles avec ExcelXIRRhonore désormais son estimation à l'aide d'un solveur sécurisé capable de trouver des racines élevées et sensibles à l'estimation, tandis queXNPVutilise une sommation compensée et des entrées de date et de taux validées- La recherche des noms définis XLSX à cardinalité élevée utilise désormais un index de hachage paresseux sensible au champ tout en conservant l'ordre sérialisé, la priorité des noms locaux et le comportement de première correspondance
- Les parties de paquet XLSX préservées allouent désormais leur taille non compressée déclarée une seule fois tout en conservant la complète vérification de longueur et de CRC
Fixed
- Les modes de recherche invalides, les recherches binaires avec caractères génériques, les plages de recherche à deux dimensions et les vecteurs de retour
XLOOKUPnon correspondants signalent désormais des erreurs de formule au lieu de produire des résultats ambigus XIRRetXNPVrejettent désormais les signes de flux de trésorerie, les taux, les estimations et les dates invalides, tronquent les séries de dates fractionnaires et signalent la non-convergence au lieu de renvoyer un point médian non vérifié
Version 2.215.0
Added
FREQUENCYrenvoie désormais un tableau vertical avec un résultat par intervalle plus le seau de dépassement
Changed
SORTutilise désormais un ordonnancement stable et évolutif pour les lignes ou les colonnes, préservant l’ordre source des clés égalesUNIQUEutilise désormais une correspondance stable indexée par hachage pour les lignes ou les colonnes, y compris les résultatsexactly_onceet le texte insensible à la cassePERCENTRANK.INC,PERCENTRANK.EXCetMODE.MULTs’adaptent désormais efficacement aux entrées à cardinalité élevée au lieu de s’appuyer sur des balayages quadratiques
Fixed
- L’option
by_coldeSORTetUNIQUEopère désormais sur les colonnes au lieu de retomber sur le comportement par lignes
Version 2.214.0
Added
- L’ouverture XLSX accepte désormais les parties XML UTF-16 little-endian et big-endian en flux continu, avec une marque d’ordre d’octets ou la déclaration spécifique au boutisme requise, y compris les caractères hors du plan multilingue de base
Changed
- Les actualisations de cache de tableau croisé dynamique à cardinalité élevée utilisent désormais des index de hachage déterministes pour les valeurs partagées et allouent la matrice d’enregistrements en une seule fois, préservant l’ordre des éléments vus en premier tout en évitant les recherches linéaires répétées et la croissance ligne par ligne
- Les lectures directes projetées écartent les cellules en dehors des lignes et colonnes sélectionnées avant de copier les valeurs brutes, les formules et le texte enrichi dans les tampons par feuille
Fixed
- Le code XML mal formé avec des marques d’ordre d’octets dupliquées, des déclarations d’encodage non prises en charge ou contradictoires, des signatures UTF-32, des longueurs d’octets UTF-16 impaires ou des paires de substitution non valides est désormais rejeté
- Les workers parallèles de lecture directe initialisent désormais tout l’état des tâches avant le démarrage, cessent d’accepter de nouvelles tâches de feuille après un échec, relancent déterministiquement l’erreur de la tâche d’index le plus bas et nettoient chaque worker créé si la construction du pool échoue
Version 2.213.0
Added
T.TESTévalue désormais les échantillons indépendants avec soit une variance égale réunie, soit une variance inégale de Welch, en plus des échantillons appariés, y compris les probabilités unilatérales et bilatérales
Changed
- L’ouverture XLSX suit désormais les cibles de relation de classeur, de feuille de calcul et de dessin pour les feuilles de calcul, les chaînes partagées, les styles, les thèmes, les macros, les liens externes, les commentaires, les commentaires en fil, le VML, les dessins, les images, les graphiques, les tableaux et les tableaux croisés dynamiques, y compris les paquets valides qui utilisent des chemins de partie renommés ou non contigus
Fixed
- Les paquets mal formés avec des identificateurs de relation dupliqués ne permettent plus à une relation non prise en charge ultérieure de remplacer la première cible utilisable lors de la récupération de compatibilité
Version 2.212.0
Changed
- Le suivi des dépendances de formule passe maintenant à l’échelle supérieure sur les grandes feuilles de calcul en indexant les dépendances de cellule et de plage avant les reconstructions et l’invalidation des cellules sales
- Les grandes formules statistiques et de régression évaluent désormais chaque valeur numérique des plages fournies au lieu de s’arrêter au tampon de taille fixe précédent
Fixed
- Les cellules XLSX en dehors de la grille de la feuille de calcul sont rejetées de manière cohérente afin que les coordonnées non valides ne puissent plus correspondre à des cellules valides
- La modification des formules ne réinitialise plus le mode de calcul du classeur, les limites d’itération, les indicateurs de calcul complet ni les autres paramètres de calcul
- Les lectures de liste de blobs valident désormais explicitement les plages demandées et autorisent des tranches vides valides à la fin du flux
Security
- Le chiffrement XLS classique couvre désormais les flux de cache de tableau croisé dynamique avec les données de la feuille de calcul
- Les queues d’extension SST mal formées et les enregistrements du répertoire central ZIP sont rejetés avant qu’une allocation surdimensionnée, des lectures tronquées ou de faux enregistrements de répertoire intégrés aux commentaires ne puissent affecter le chargement
Version 2.211.0
Added
TXLSPivotTable.Makematérialise désormais chaque champ de données configuré avec sa propre agrégation et développe les valeurs sur les lignes ou les colonnes selonDataFieldAxisIsRow
Changed
- La génération de résultats de tableau croisé dynamique réutilise les domaines de clés de ligne et de colonne indexés par hachage à travers tous les champs de données, sélectionne un stockage d’accumulateur dense ou dispersé selon la forme du résultat, préserve l’ordre des éléments de cache au-delà de neuf clés, et émet des étiquettes combinées lisibles pour les axes à plusieurs champs
Fixed
Countinclut désormais les valeurs de cache de texte non vide, booléennes, d’erreur, de date et numériques tandis queCountNumsn’inclut que les valeurs numériques et de date,Productrenvoie zéro pour les intersections sans valeurs numériques, les cellules vides ne sont plus comptées comme des entrées, et les tableaux croisés dynamiques à valeurs uniquement peuvent matérialiser leurs totaux généraux sans champ de ligne ni de colonne
Version 2.210.0
Added
TXLSWorkbookViewerrestitue désormais les remplissages conditionnels XLSX, la couleur et l’accent de la police, les formats de nombre, les barres de données directionnelles positives et négatives, les dégradés, les bordures, les axes, les valeurs masquées et toutes les familles de jeux d’icônes intégréesTXLSWorkbookViewer.RefreshConditionalFormatsreconstruit l’état agrégé et de seuil préparé après que les appelants modifient un classeur XLSX attaché sur place
Changed
- La visionneuse met en cache un évaluateur de format conditionnel préparé par feuille de calcul active, le réutilise à travers les opérations de défilement, de sélection et de repeinture, et le libère lorsque le classeur ou la feuille de calcul change
Fixed
- Les axes de barres de données à la limite la plus à droite sont désormais découpés à l’intérieur de la cellule propriétaire au lieu d’être dessinés dans la cellule adjacente
Version 2.209.0
Added
- Les feuilles de calcul XLSX exposent désormais un évaluateur de format conditionnel préparé qui résout la priorité des règles,
StopIfTrue, les formules relatives, les styles différentiels, le classement Haut/Bas, les tests au-dessus/en dessous de la moyenne, les valeurs en double et uniques, les périodes de date relatives, les échelles à deux et trois couleurs, les barres de données et les jeux d’icônes pour n’importe quelle cellule
Changed
- Les exportations HTML et PDF restituent désormais les remplissages conditionnels correspondants, l’accent et la couleur de la police, les formats de nombre, les échelles de couleur, les barres de données directionnelles positives et négatives, les axes explicites, les glyphes de famille d’icônes, les valeurs masquées et les couleurs de thème avec résolution de la teinte
- Les grands domaines de format conditionnel réutilisent désormais les formules relatives compilées sans allocation d’arbre de syntaxe par cellule, diffusent les statistiques de moyenne, d’écart, de minimum et de maximum, ne conservent les valeurs ordonnées que pour les règles de classement ou de centile, trient par lots les clés en double Unicode, et utilisent les index de candidats à bande de ligne pour éviter de balayer des règles non liées
Fixed
- Les règles conditionnelles classiques chargent désormais correctement les types d’expression et évaluent de manière cohérente l’inversion entre les bornes, les prédicats de texte insensibles à la casse, les cellules vides et les prédicats d’erreur
Version 2.208.0
Changed
- Le moteur de stockage de cellules compacté écrit désormais des charges utiles natives de chaîne, booléen, d’erreur et vide étiquetées, itère les cellules dans l’ordre ligne par ligne, et code par plages les cellules consécutives de type égal pour une utilisation de mémoire réduite et une sortie séquentielle plus rapide
- Les chaînes partagées du classeur classique conservent désormais les octets de caractères dans une seule allocation et créent les valeurs de chaîne décodées de manière paresseuse, réduisant la surcharge d’allocation pour les grandes tables de chaînes uniques
Added
- Les tableaux croisés dynamiques peuvent désormais calculer une matrice de résultats complète à partir des enregistrements de cache avec le regroupement par clés de ligne et de colonne et les 11 fonctions d’agrégation prises en charge
- Les graphiques du classeur classique exposent désormais les informations de série, d’axe, de légende et de groupe de graphique typées pour les flux de travail de conversion et d’inspection
Version 2.207.0
Added
TXLSPivotCache.RefreshFromSourceconstruit un cache de tableau croisé dynamique à partir d'une plage de feuille de calcul source : il lit la ligne d'en-tête pour nommer les champs, distille les valeurs distinctes de chaque ligne de données dans le domaine des éléments partagés par champ, verrouille le type du champ à partir de la première valeur non vide et enregistre l'index d'élément partagé pour chaque couple (enregistrement, champ) — de sorte qu'un tableau croisé dynamique puisse être créé par programme à partir d'une plage de données au lieu de s'appuyer sur l'optionrefreshOnLoadd'Excel. Un lecteur de valeurs fondé sur des rappels garde l'unité de tableau croisé exempte de toute dépendance directe à la feuille de calcul
Version 2.206.0
Added
- Le nouveau
TlxCellMMU(unitélxCellMMU) implémente un moteur de stockage de cellules compact, ordonné par lignes, avec un codage par plages de longueur pour les suites de cellules de type égal ou vides, ainsi qu'un code de type à octet étiqueté servant également de sélecteur de largeur de données — de sorte qu'une colonne de petits entiers coûte un octet par cellule au lieu de huit. Le moteur encode les nombres dans la plus petite largeur préservant la valeur (entiers int8 / int16 / int32 / entiers mis à l'échelle à 2 ou 4 décimales / double IEEE), stocke les cellules d'index de chaîne, booléennes, d'erreur et vides de manière compacte et expose une APIGetValue/SetNumber/SetStringainsi qu'un itérateur en avant. Il s'agit du backend de nouvelle génération, derrière un commutateur de fonctionnalité, pour l'APITXLSXCellsexistante, visant une réduction du jeu de travail de 10à 25× sur les feuilles denses
Version 2.205.0
Added
TXLSCustomChart.GetChartInfodécode désormais un résumé sémantique à partir du flux d'enregistrements BIFF brut du graphique — famille de type de graphique (à barres, en courbes, en secteurs, en aires, en nuage de points, en radar, en anneau, en surface, en bulles), nombre de séries et présence de légende — de sorte que le type d'un graphique BIFF puisse être interrogé par programme et qu'une conversion de graphique BIGH vers XLSX puisse choisir la bonne famille cible. Le stockage par passage d'octets garantissant la fidélité des allers-retours reste inchangé
Version 2.204.0
Changed
- La table de chaînes partagées du
.xlsclassique écrit désormais les chaînes ASCII uniquement dans le codage Latin-1 compressé ([MS-XLS] §2.5.294fHighByte=0, un octet par caractère) au lieu d'utiliser systématiquement UTF-16, ce qui réduit à peu près de moitié la taille de la SST — et donc du fichier.xls— pour les classeurs à forte teneur en ASCII
Version 2.203.0
Added
- Le nouveau
TlxCompoundFilelit et écrit directement le format de conteneur Compound File Binary (OLE2) en Pascal pur, sans dépendance vis-à-vis deole32.dll/ de l'IStorageCOM — ouvrant la voie à un traitement.xlsen mémoire et multiplateforme. Le lecteur couvre la disposition v3 que HotXLS rencontre en pratique (en-tête + DIFAT inclus dans l'en-tête + parcours de la chaîne FAT + MiniFAT et mini-flux pour les flux de moins de 4096 octets + l'arborescence de répertoires) ; le writer émet un conteneur v3 minimal mais valide, suffisant pour la sortie de HotXLS
Version 2.202.0
Added
- L'état de tri du filtre automatique possède désormais un modèle typé (
TXLSXSortStateavec des enfantsTXLSXSortCondition) couvrant le tri par valeur / couleur de cellule / couleur de police / icône, la méthode de tri (aucune / par tracé / pinYin), la sensibilité à la casse, le tri par colonne et les listes personnalisées par condition — de sorte que les applications puissent construire des états de tri par programme au lieu de modifier le XML brut, tandis que le passage opaqueSortStateXmlhérité reste privilégié pour les fichiers non créés par HotXLS - Les filtres dynamiques sont désormais lus et écrits sous forme d'un
TXLSXDynamicFilterTypetypé (supérieur/inférieur à la moyenne et écart-type, aujourd'hui/hier/demain, cette semaine/la dernière/la prochaine, mois, trimestre et année, année en cours, T1à T4, M1à M12) avec des bornes optionnellesval/maxVal— l'ouverture d'un classeur utilisant un filtre dynamique ne le supprime plus lors de l'enregistrement
Version 2.201.0
Added
- Les graphiques en surface et en surface 3D (
xlsxChartSurface/xlsxChartSurface3D) sont désormais des types de graphiques de premier rang — écrits, lus et soumis à un aller-retour comme les autres familles de graphiques - L'API de création de formes automatiques couvre un sous-ensemble pratique de la liste des géométries prédéfinies OOXML — triangles, losanges, parallélogrammes, hexagones, octogones, flèches, chevrons, bulles d'appel, nœuds d'organigramme, étoiles, cœurs, soleil, lune, crochets et accolades — chacun correspondant à son jeton
prstcorrect et à son identifiant de forme[MS-ODRAW], de sorte que les formes créées s'affichent correctement dans Excel (la liste complète des 187 préréglages était déjà préservée lors des allers-retours via le passage par ancre brute)
Version 2.200.0
Fixed
- L'ouverture d'un classeur dont le filtre automatique utilise un filtre de couleur ou un filtre d'icône ne supprime plus ce filtre lors de l'enregistrement —
colorFiltereticonFiltersont désormais lus dans des colonnes typées (TXLSXAutoFilterColumn.SetColorFilter/SetIconFilter) et réémis tels quels, au lieu d'être perdus en tant qu'enfants de colonne de filtre non reconnus
Version 2.199.0
Added
TCondFormatRule.Evaluateindique si une règle de mise en forme conditionnelle se déclenche pour une cellule donnée, en couvrant les comparaisons de valeur de cellule, les expressions de formule, le texte contient/commence par/se termine par, les règles sur les cellules vides et les erreurs — la base permettant de connaître quelles cellules une règle met actuellement en évidence et de produire le rendu des résultats CF en dehors d'Excel
Changed
FACTet les assistants internes de factorielle utilisent désormais une table précalculée 0! ..170! au lieu de recalculer un produit O(n) à chaque appel, ce qui accélèreFACT, les coefficients multinomiaux et les chemins de distribution Poisson/Binomiale/Khi-deux
Version 2.198.0
Changed
- L'enregistrement d'une feuille de calcul groupe désormais les cellules en lignes avec un seul passage de comptage puis de remplissage, au lieu de faire croître l'index de chaque ligne par une réallocation par cellule, supprimant ainsi une copie O(cellules × cellules par ligne) cachée sur les grandes feuilles
- Le graphe des dépendances de formule indexe désormais ses plages de référence par (feuille, ligne), de sorte que l'amorce d'une cellule sale effectue une recherche binaire sur la bande candidate au lieu de parcourir toutes les formules à chaque cellule modifiée — plus le classeur est volumineux et comporte de feuilles, plus l'accélération au recalcul est importante
- Le parcours des cellules ordonné par lignes puis trié par colonnes est désormais exposé sous la forme
TXLSXWorksheet.BuildRowMajorCellOrder, de sorte que l'enregistrement, le presse-papiers, le filtre automatique et les autres consommateurs ordonnés par lignes partagent un seul parcours au lieu de le redériver
Version 2.197.0
Fixed
- Les graphiques en radar, en bourse et les graphiques « secteur de secteur » / « barre de secteur » ne sont plus perdus lorsqu'un classeur
.xlsxqui les contient est ouvert puis réenregistré — le lecteur de graphiques reconnaît désormais les éléments conteneursc:radarChart,c:stockChartetc:ofPieChartqu'il écrit déjà, restaurant une couverture lecture/écriture symétrique SUBTOTALavec les codes de fonction 101à 111 exclut désormais les valeurs des lignes masquées, etAGGREGATErespecte désormais ses codes d'option d'ignorance des lignes masquées (2, 3, 6, 7), en concordance avec Excel au lieu de traiter de façon identique les variantes avec et sans lignes masquées- L'appel d'une fonction intégrée à arité fixe avec plus d'arguments que déclarés (par exemple
=SIN(1,2)) lève désormais#VALUE!de manière centralisée, au lieu d'être accepté par le répartiteur
Version 2.196.0
Fixed
- L'insertion ou la suppression de lignes et de colonnes partitionne désormais les formats conditionnels de valeur de cellule et d'expression ainsi que les validations de données lorsque les zones cibles modifiées nécessitent des ancres de formule relatives différentes, tout en préservant les paramètres de règle, en attribuant des priorités de format conditionnel uniques et en conservant intacts les domaines de format conditionnel agrégés
Version 2.195.2
Changed
- L'export PDF sous-ensembliste désormais la police TrueType intégrée via l'API
CreateFontPackagedefontsub.dllsous Windows, en ne conservant que les glyphes réellement rendus par le document au lieu d'intégrer l'intégralité du.ttf— réduisant généralement la taille du PDF de 8à 20× pour les feuilles à forte teneur Unicode ; repli sur l'intégration complète lorsque le sous-ensemblistage n'est pas disponible
Version 2.195.1
Fixed
- L'insertion ou la suppression de lignes et de colonnes sur le moteur
.xlsclassique réécrit désormais toutes les références de formule affectées (formules de cellule et noms définis) pour respecter la sémantique d'Excel — les références situées sous une insertion se décalent, les références entièrement incluses dans une suppression deviennent#REF!, et les zones partiellement chevauchantes se réduisent — au lieu de laisser des coordonnées périmées
Version 2.195.0
Changed
- La suppression de colonnes de tableau convertit désormais chaque jeton de référence structurée affecté en
#REF!dans les formules de feuille de calcul, les formules de tableau, les noms définis et les séries de graphique, tout en préservant les références sans rapport et les littéraux de chaîne
Fixed
- La suppression d'un tableau entier ne laisse plus de références structurées qualifiées pointant vers un tableau qui n'existe plus
- Les validations de données clonées conservent désormais leur mode de saisie IME
Version 2.194.0
Changed
- Les éditions de lignes et de colonnes maintiennent désormais les identificateurs de colonne, les noms, les formules calculées, les formules de totaux, les colonnes de filtre, les plages de filtre et les conditions de tri du tableau Excel alignés avec le tableau modifié
Fixed
- Les formules de format conditionnel et de validation de données rebasent désormais les références relatives et mixtes lorsqu'une suppression retire leur première zone cible
- Les états de tri de feuille de calcul et de tableau écrivent désormais des attributs valides et suppriment les conditions dont les plages ont été supprimées
Version 2.193.0
Changed
- Les éditions de lignes et de colonnes mettent désormais à jour les formules de noms définis complexes et à portée croisée, les plages de données des graphiques en bulles et les seuils de format conditionnel visuel fondés sur des formules
- Les graphiques en bulles et en nuage de points restaurent désormais leurs plages de séries d'axe X, d'axe Y et de taille de bulle lors de la réouverture
Fixed
- Les cibles de format conditionnel et de validation de données multi-zones décalent désormais chaque zone survivante indépendamment, au lieu de laisser la liste complète des cibles inchangée
- Les ancres des zones de texte et du WordArt se déplacent ou se redimensionnent désormais avec les lignes et colonnes insérées et supprimées
Version 2.192.0
Added
- Les lectures directes en flux et le parcours par curseur de lignes peuvent désormais adopter des chaînes riches structurées avec une mise en forme complète des exécutions, des exécutions phonétiques et des propriétés phonétiques, tout en conservant un stockage borné des chaînes partagées
TXLSDirectWriter.WriteRichStringécrit le texte mis en forme et phonétique sous forme de chaînes partagées en ligne ou dédupliquées
Changed
- La déduplication des chaînes partagées riches distingue désormais la mise en forme des exécutions et les métadonnées phonétiques, tout en conservant l'internement des chaînes ordinaires sur son chemin rapide existant
Fixed
- Le texte phonétique des chaînes en ligne n'est plus inclus dans la valeur de cellule affichée
Version 2.191.0
Added
TXLSXRange.SetDynamicArrayFormulacrée désormais des formules de tableau dynamique natives avec la chaîne de métadonnées XLDAPR complète d'Excel
Changed
- Les racines de tableau dynamique partagent désormais un seul enregistrement de métadonnées de classeur dédupliqué, et les copies de feuilles de calcul ou de plages entre classeurs remappent cet enregistrement dans le classeur de destination
- Les métadonnées de tableau dynamique prises en charge restent disponibles lorsque la préservation des parties de paquet non prises en charge est désactivée, tandis que les métadonnées de valeur sans rapport sont toujours supprimées
Fixed
- Les cellules de débordement de tableau dynamique ne sont plus modélisées comme des suiveuses CSE héritées, et le remplacement ou l'effacement de la racine ne laisse plus d'index de métadonnées périmés
- La suppression de la dernière racine de tableau dynamique supprime désormais la partie de métadonnées inutilisée, la relation de classeur et l'entrée de type de contenu
Version 2.190.0
Changed
- Les lectures directes en flux et le parcours par curseur de lignes développent désormais les suiveuses de formule partagée en formules complètes relatives à la cellule, tout en conservant le comportement de projection et de mémoire bornée
Fixed
- Les classeurs à tableau dynamique préservent désormais les index de métadonnées de cellule et de valeur, les attributs de recalcul de formule, les relations de partie de paquet de métadonnées et les préfixes de fonction future inchangés lors des cycles d'ouverture et d'enregistrement
- La désactivation de la préservation des parties non prises en charge ne laisse plus d'index de métadonnées de feuille de calcul pendantes après la suppression de la partie de métadonnées
Version 2.189.0
Added
- L'ouverture des classeurs XLSX développe désormais les suiveuses de formule partagée en formules complètes par cellule, avec des références relatives, absolues, mixtes, de plage et qualifiées par feuille correctes
Fixed
- Les suiveuses de formule partagée auto-fermantes ne capturent plus les XML de valeur ou de formule ultérieurs, et leurs résultats mis en cache survivent aux cycles d'ouverture et d'enregistrement
- Les formules de tableau CSE conservent désormais leurs relations d'ancrage et de suiveuse lors des éditions de structure de lignes ou de colonnes, des copies de plages complètes, de la duplication de feuilles de calcul et des copies de feuilles entre classeurs
- L'affectation d'une formule normale ou l'effacement d'une cellule supprime désormais l'appartenance périmée à un tableau CSE, afin que le calcul ne puisse pas être redirigé vers une ancienne ancre de tableau
- La copie d'une partie seulement d'un tableau CSE ne crée plus de références de suiveuses pendantes dans la destination
- Les copies de plages réalisent désormais un instantané des sources chevauchantes et décalent les références de formule relatives, empêchant les cellules sources ou les ancres de tableau d'être écrasées avant d'être copiées
- Les éditions de lignes ou de colonnes qui ne croisent qu'une partie d'un tableau CSE sont rejetées, au lieu de redimensionner ou de détacher silencieusement le tableau
Version 2.188.0
Added
TXLSDirectReader.SharedStringMemoryLimitborne la mémoire de chaînes partagées décodée et migre automatiquement les tables plus volumineuses vers un stockage temporaire indexé à suppression à la fermeture, avec un cache de valeurs à taille fixeTXLSRowCursor.SharedStringMemoryLimitexpose le même contrôle de stockage borné des chaînes partagées pour le parcours de lignes en avant uniquement
Changed
- L'analyse directe des chaînes partagées préserve désormais les valeurs composées uniquement d'espaces, CDATA, les entités XML, les caractères non BMP, les éléments vides et l'ordre des exécutions de texte riche, tout en excluant le texte de guide phonétique de la valeur affichée
Fixed
- L'ouverture des classeurs XLSX conserve désormais tous les éléments de chaîne partagée dans l'ordre du document, empêchant la duplication de texte ou la fusion ultérieure d'index de cellules par des chaînes riches de mise en forme différente
- L'enregistrement des classeurs XLSX déduplique désormais les chaînes riches par limites d'exécution et propriétés de mise en forme, au lieu du seul texte visible, préservant une mise en forme distincte pour les cellules ayant la même valeur affichée
Version 2.187.0
Added
TXLSDirectReader.FirstRowetLastRowlimitent les lectures en flux à une plage de lignes en base 1 et arrêtent l'analyse de la feuille de calcul après la plage demandéeTXLSDirectReader.IncludeColumnetClearColumnProjectionfournissent une projection de colonnes à temps constant qui ignore les cellules non sélectionnées avant le décodage des valeurs et la distribution des rappels
Version 2.186.0
Added
TXLSDirectWriter.UseSharedStringspeut dédupliquer le texte répété dans une partie de chaînes partagées OOXML avec des comptes totaux et uniques exacts, réduisant la taille du paquet pour les données à forte répétitionTSimpleDomReaderfournit une arborescence XML compacte à passage unique pour les requêtes à accès aléatoire des métadonnées de classeur et des parties de paquet, avec une recherche de QName et de nom local sensible à la casse
Changed
- La lecture directe XLSX utilise désormais une distribution exacte des éléments assistée par hachage, une récolte d'attributs à passage unique et une recherche de colonne de la ligne courante à temps constant, tout en préservant le comportement de mémoire en flux
- La génération du XML des chaînes partagées utilise désormais un tampon à croissance linéaire afin d'éviter les copies répétées de chaînes entières sur les grandes tables de chaînes distinctes
Fixed
- L'export de formules CSV n'ajoute plus un deuxième signe égal lorsque le texte de la formule en comporte déjà un
- L'export PDF XLSX ne tronque plus le texte des cellules en utilisant une estimation par comptage de caractères avant la mise en page
- Les hachages de noms du lecteur XML suivent désormais les instructions de traitement, les attributs et les retours vers leurs éléments propriétaires, sans exposer d'état d'élément périmé
Version 2.185.1
Fixed
- L'insertion ou la suppression de lignes et de colonnes ajuste désormais les références de formule locales et entre feuilles exactement une seule fois, tout en préservant les noms de fonction et les littéraux de texte
Version 2.185.0
Added
TXLSPDFExportfournit désormais une sélection de sortieFirstPageetLastPageen base 1, unPageCountlogique complet et six surcharges deCalculatePageCountpour les plages classiques et XLSX, les feuilles de calcul et les classeurs, sans construire d'objets de page PDFTXLSXWorkbook.SaveWorkbookAsHTMLpublie les feuilles de calcul visibles dans un seul document HTML navigable, avec des ancres stables par feuille, des titres et noms de feuille échappés, et une option pour inclure les feuilles masquées ou très masquéesTDataToXLS.BeforeRecordpeut ignorer des enregistrements avant la sortie des lignes etBeforeValuepeut transformer ou supprimer des valeurs de champ avec un contexte de jeu de données, de niveau de détail, de champ source et de colonne d'exportTXLSWorkbookViewerexpose les commentaires et liens hypertexte de la cellule sélectionnée, lève un événement de lien hypertexte contrôlé par l'application, peint les indicateurs de commentaire ainsi que les polices, remplissages et alignements XLSX, et normalise la sélection et le rendu à travers les plages fusionnées
Changed
- L'exemple ConversionWorkbench peut désormais produire une sortie PDF et publie toutes les feuilles de calcul XLSX visibles pour les cibles HTML, tandis que l'exemple WorkbookViewer illustre la navigation dans les cellules fusionnées, les commentaires et l'activation des liens hypertexte
Version 2.184.0
Added
- Les plages XLS classiques et XLSX peuvent copier du texte tabulaire Unicode et du HTML stylé vers le presse-papiers Windows via
CopyToClipboard, en préservant les formules, les cellules fusionnées, les liens, la mise en forme d'affichage, ainsi que les tabulations, sauts de ligne et guillemets intégrés correctement échappés TXLSXWorkbookpréserve désormais les parties de paquet personnalisées accessibles depuis les relations inconnues de la racine de paquet, du classeur, des feuilles de calcul ou des dessins, y compris la gestion des collisions d'identificateurs de relation, les types de contenu, les relations enfants, le choix de compression et les octets exacts de la charge utile ;PreserveUnsupportedParts,UnsupportedPartCount,UnsupportedPartBytesetClearUnsupportedPartsexposent le contrôle et les diagnostics- Les enregistrements XLS classiques exposent des rappels de début, de travail et de fin avec annulation via
OnProgressEx, tandis queIXLSWorkbookProgressfournit des diagnostics structurés avec des codes stables, la sévérité, l'opération, le contexte de feuille, les valeurs de retour natives et les détails d'exception TXLSXWorkbookexpose désormais les mêmes surfaces structuréesDiagnostics,LastDiagnosticetOnDiagnosticpour le signalement d'enregistrement, d'ouverture, de recalcul, d'annulation et d'exception- Les modules VBA analysés prennent désormais en charge l'édition de
SourceCodeet l'écriture du flux de module compressé mis à jour via les enregistrements XLS classiques, le stockage VBA autonome et les enregistrements OOXML activé pour les macros, tout en préservant les préfixes de flux et le contenu de projet non touché - Les feuilles de calcul classiques et les collections de formes exposent désormais les contrôles de formulaire typés
TXLSCheckBox,TXLSComboBoxetTXLSListBox, avec des assistants de création, des libellés, l'inspection du type de contrôle, les ancres de cellule, la suppression et la découverte à l'ouverture/enregistrement TXLSXRange.ApplyFormatPatchpeut copier sélectivement les composants de police, de remplissage, de bordure, de format numérique, d'alignement et de protection, avec pavage selon le motif source, tout en préservant les valeurs de destination et la mise en forme non sélectionnéeTDataToXLSpeut exporter récursivement des jeux de données maître-détail liés viaReadDetailTablesetIndentDetailTables, en préservant les liaisons de données actives, en ajoutant chaque table de détail sous son enregistrement maître, et en héritant des options de champ, de titre et de mise en forme à chaque niveauTXLSXWorksheet.AddWordArtcrée du texte DrawingML ancré à la cellule, avec déformation prédéfinie et couleurs de texte et de contour configurables, et le chemin de préservation des ancres de dessin brutes conserve la forme WordArt complète lors des cycles ultérieurs d'ouverture/enregistrementTXLSWorkbookViewerajoute une visionneuse VCL de feuille de calcul pour les objets de classeur classiques et modernes, avec chargement des fichiers XLS, XLSX, XLSM, modèle et ODS, texte de cellule mis en forme, styles classiques, dimensionnement des lignes et colonnes, en-têtes, rendu de grille et de sélection, barres de défilement, sélection à la souris, navigation au clavier, positionnement des cellules, bascule de feuille de calcul et événements de sélection ou de feuille- Les nouveaux exemples Delphi
FeatureShowcaseetWorkbookViewerillustrent l'impression PDF stylisée, les titres d'impression, les sauts manuels, les contrôles de formulaire classiques, les correctifs de mise en forme sélectifs, le WordArt, les diagnostics, la création de visionneuse à l'exécution, le chargement de fichiers, la navigation des cellules, la bascule de feuille de calcul et les événements de visionneuse, avec des guides anglais correspondants et des rubriques de référence développeur
Changed
- L'export PDF des classeurs, feuilles de calcul et plages XLS classiques et XLSX modernes écrit désormais chaque feuille de calcul visible dans un seul document, ignore les feuilles masquées et graphiques, rend les remplissages pleins, les couleurs de police, les tailles de police, les emphases gras et italique, l'alignement horizontal et vertical, les bordures de cellule explicites et les lignes de grille facultatives des feuilles, suit la zone d'impression, la taille de papier, l'orientation, les marges, le zoom, l'ajustement à la largeur, les largeurs de colonne, les hauteurs réelles de ligne, les sauts de page manuels de ligne et de colonne, ainsi que les lignes et colonnes de titre répétées et les en-têtes et pieds de page en trois parties avec champs de page, de nombre total de pages, de nom de feuille, de date et d'heure de chaque feuille, pagine les plages larges et hautes sur les deux axes, émet une syntaxe numérique PDF indépendante de la locale, et intègre une police TrueType éligible plus une table ToUnicode pour le texte hors WinAnsi
- Les rappels de progression étendus XLSX reçoivent désormais des états de début, de travail et de fin fiables pour l'enregistrement, l'ouverture et le recalcul, tandis que le rappel hérité reste limité au travail et que chaque opération réinitialise l'état d'annulation précédent
- La sérialisation XLS classique propage désormais les échecs de feuille de calcul, de graphique, d'extension de style, de VBA, de flux de contrôle, de stockage et de validation de sortie au lieu de signaler le succès, et les enregistrements de fichiers préparent le fichier composé complet avant de remplacer atomiquement la destination
- Les enregistrements de fichiers XLSX et ODS construisent désormais un paquet temporaire voisin complet et ne remplacent atomiquement la destination qu'après une finalisation réussie, laissant les fichiers existants inchangés après annulation ou échec
Version 2.183.0
Added
TXLSDirectWriterprend désormais en charge les handles de style de cellule réutilisables au niveau du paquet et le clonage de style sans mettre en mémoire tampon les lignes de la feuille de calcul ; le même index de style peut être appliqué à un nombre quelconque de cellules ou réutilisé entre feuilles de calcul- Les styles de cellule directs fournissent 30 capacités de mise en forme couvrant le nom et la taille de police, la couleur BGR, le gras, l'italique, le barré, le contour, l'ombre, cinq modes de soulignement, 19 motifs de remplissage avec couleurs d'avant-plan et d'arrière-plan, cinq bords de bordure colorés indépendamment avec 14 styles de ligne et directions diagonales, les formats numériques intégrés ou personnalisés, l'alignement horizontal et vertical, le renvoi à la ligne, l'ajustement automatique, le retrait, la rotation du texte, les préfixes de guillemet et la protection verrouillée/masquée
- Des surcharges stylisées sont disponibles pour les chaînes, les nombres, les booléens, les dates, les formules, les erreurs et chaque type de résultat de formule mis en cache, ce qui permet aux exportateurs à gros volume de sélectionner un style préconstruit par index entier lors des écritures séquentielles
Changed
- Le writer direct déduplique les composants égaux de police, remplissage, bordure et format numérique lors de la construction de
styles.xml, tout en préservant les index de style de cellule stables déjà écrits dans les flux de feuille de calcul - Les tables de style générées du writer direct incluent désormais les remplissages par défaut standard
noneetgray125avant les remplissages personnalisés pour une compatibilité OOXML plus stricte
Version 2.182.0
Added
TXLSDirectWriterécrit désormais la mise en forme conditionnelle en conservant son profil de mémoire indépendant du nombre de lignes, avec huit opérateurs de valeur de cellule, des règles d'expression, des règles de texte contient/ne contient pas/commence par/se termine par, des règles de valeur et de pourcentage supérieures ou inférieures, des règles au-dessus ou en dessous de la moyenne, les valeurs en double et uniques, les cellules vides et non vides, les cellules en erreur et sans erreur, les barres de données, les échelles à deux et trois couleurs, et les 17 familles de base de jeux d'icônes- Les règles de format conditionnel direct prennent en charge les priorités explicites, l'évaluation stop-if-true, les options d'écart-type et d'égalité de la moyenne, le remplacement des seuils d'icône, l'affichage icône uniquement et inversé, la visibilité des valeurs de barre de données, les couleurs BGR, et les styles différentiels de remplissage, couleur de police, gras et italique
Changed
- Le writer direct déduplique les styles différentiels équivalents entre les feuilles de calcul et ne stocke que les règles et styles de format conditionnel, de sorte que l'utilisation mémoire évolue avec le nombre de règles plutôt qu'avec le nombre de lignes de la feuille de calcul
- Les types de seuils minimum et maximum automatiques des barres de données sont normalisés en jetons standard
minetmaxdans l'élément OOXML de base, pour une large compatibilité avec les tableurs
Version 2.181.0
Added
TXLSDirectWriterécrit désormais la protection des feuilles de calcul et des classeurs sans mettre en mémoire tampon les données de la feuille, y compris 15 autorisations fine-grained de feuille, les vérificateurs de mot de passe hérités, les métadonnées de hachage modernes, les plages protégées modifiables avec mots de passe ou descripteurs de sécurité facultatifs, les verrous de structure et de fenêtre du classeur, l'affectation de vérificateur brut et l'effacement de protection
Fixed
- Les ancres de dessin non prises en charge conservent désormais tous les éléments de fermeture lors de leur reconstruction pour la sortie d'aller-retour, de sorte que les dessins de forme seule restent bien formés après ouverture et enregistrement
- Les autorisations de protection des feuilles de calcul XLSX suivent désormais la définition OOXML du drapeau verrouillé, de sorte que les actions autorisées écrivent
0, les actions interdites écrivent1, et les attributs omis rouvrent avec leurs valeurs par défaut de schéma - Les mots de passe hérités de feuille de calcul, de plage protégée et de classeur XLSX utilisent désormais l'algorithme de vérificateur 16 bits compatible Excel avec conversion ANSI et la limite de 15 octets
Version 2.180.0
Added
- Le modèle de feuille de calcul XLSX réalise désormais l'aller-retour des éléments Gestionnaire de scénarios What-If (
<scenarios>) et Consolidation de données (<dataConsolidate>). Les nouvelles propriétés de XML brutScenariosXmletConsolidateXmlsurTXLSXWorksheettransportent le contenu interne tel quel — le writer émet les éléments enveloppes, le lecteur analyse les enfants scénario/consolidation de données en retour. Les fichiers de modélisation financière qui définissent des scénarios ou des définitions de consolidation ne les perdent plus lors de l'aller-retour
Version 2.179.0
Added
- Une nouvelle fonction utilitaire
XlsxBuildNumFmtconstruit des codes de format de nombre OOXML à partir de propriétés sémantiques —Decimals,Thousands(séparateur),NegativeRed(négatifs en rouge),CurrencySymboletPercent. Les appelants n'ont plus besoin d'écrire à la main des chaînes de format comme"$#,##0.00;[Red]-$#,##0.00"— le builder les produit à partir de paramètres simples. Conçue pour servir avecCell.NumberFormatouWorkbook.NumberFormats.Add
Version 2.178.0
Added
- Le modèle de feuille de calcul XLSX réalise désormais l'aller-retour du nom de code VBA (
<sheetPr codeName="..."/>), essentiel pour l'interopérabilité VBA où le projet VBA référence les feuilles de calcul par nom de code. Nouvelle propriétéCodeNamesurTXLSXWorksheet - Les commentaires prennent désormais en charge un commutateur de visibilité
AlwaysShowsurTXLSXComment— lorsqu'il vaut True, la bulle de commentaire est toujours visible (le commutateur « Afficher/Masquer le commentaire » par commentaire d'Excel), et non plus seulement au survol - La validation des données réalise désormais l'aller-retour de l'attribut de mode IME (
imeMode) surTXLSXDataValidation. L'énumération à 11 valeurs contrôle le comportement de la méthode de saisie CJK lors de la saisie dans une cellule (noControl / off / on / hiragana / fullKatakana / etc.). Essentiel pour les fichiers de locale japonaise/coréenne/chinoise - The worksheet model gains a
PaneStateproperty for the pane-state attribute on<pane>beyond the existing frozen-mode handling — supportsfrozenSplit(frozen-then-scrollable) andsplitstates
Version 2.177.0
Added
- Trois fonctions de feuille de calcul précédemment enregistrées mais non implémentées disposent désormais d'une distribution complète :
DOLLAR(texte au format monétaire),FIXED(texte à décimales fixes avec suppression facultative des virgules) etAREAS(nombre de zones dans une référence). Auparavant, elles étaient enregistrées dansInitFuncHashmais n'avaient pas de cas dans le moteur de calcul — l'évaluation de=DOLLAR(...)renvoyait silencieusement des résultats erronés - Le modèle de feuille XLSX réalise désormais l'aller-retour des échelles de zoom par type de vue (
zoomScaleNormal/zoomScalePageLayoutView/zoomScaleSheetLayoutView), de la couleur du quadrillage (sheetView color) et des drapeaux d'affichage de la vue de feuille (showFormulas/showZeros). Nouvelles propriétés surTXLSXWorksheet:ZoomNormal,ZoomPageLayout,ZoomSheetLayout,GridColor,ShowFormulas,ShowZeros - La direction de synthèse du plan réalise désormais l'aller-retour. Les nouvelles propriétés
SummaryBelow,SummaryRightetShowOutlineSymbolssurTXLSXWorksheetcontrôlent l'apparition des lignes/colonnes de synthèse sous/à droite des détails et la visibilité des symboles de plan. Le writer émet<outlinePr>à l'intérieur de<sheetPr>; le lecteur l'analyse en retour - Le calcPr du classeur transporte désormais les attributs
forceFullCalcetcalcCompletedaux côtés du trio existantcalcId/fullCalcOnLoad/calcMode/iterate
Version 2.176.0
Added
- Le moteur de formules XLSX résout désormais les références structurées de tableau avant la compilation. Une nouvelle méthode
ResolveStructuredRefssurTXLSXWorkbookrecherche dans le texte de formule les motifsTableName[ColumnSpec]et les remplace par des références de plage A1 concrètes à l'aide de la collectionTXLSXTabledu classeur. Les spécifications prises en charge incluent la plage de données de colonne (Sales[Qty]), la colonne de ligne courante (Sales[@Total]), les données complètes (Sales[#Data]/Sales[#All]), les en-têtes (Sales[#Headers]) et la ligne de totaux (Sales[#Totals]). La résolution s'exécute automatiquement dansGetCompiledFormula— les formules existantes ne sont pas affectées puisque les identificateurs hors tableau sont laissés tels quels. Auparavant, les références structurées provoquaient l'échec de la compilation de formule
Version 2.175.0
Added
- Le moteur de formules prend désormais en charge la compilation de formules en style de référence R1C1. Une nouvelle méthode
GetCompiledFormulaR1C1surTXLSCalculator(etGetCompiledR1C1surTXLSFormula) accepte une formule écrite en notation R1C1 (R2C3pour l'absolu,R[-1]C[2]pour le relatif,RCpour la cellule courante) et la compile en la convertissant d'abord en notation A1 à l'aide de la ligne/colonne de la cellule de formule. Une fonction autonomeR1C1ToA1effectue la conversion — elle détecte les marqueursR/Cautonomes (qui ne font pas partie d'un nom de fonction comme ROUND), analyse les décalages optionnels entre crochets et produit la référence A1 équivalente. Les littéraux de chaîne et identificateurs sont ignorés. Auparavant, seules les formules de style A1 pouvaient être compilées
Version 2.174.0
Added
- La sortie AutoFilter de
TXLSDirectWriterprend désormais en charge les colonnes de filtre de feuille de calcul et de tableau, les filtres de valeur, les filtres de cellules vides, les filtres de regroupement de dates, les filtres de comparaison personnalisés, les filtres dynamiques, les filtres supérieurs/inférieurs, les drapeaux de bouton de filtre, les états de tri, les conditions de tri, l'échappement XML et la suppression des plages de filtre de feuille de calcul/tableau en double lors du flux des fichiers XLSX
Version 2.173.0
Added
- La sortie de tableau de
TXLSDirectWriterprend désormais en charge les commentaires de tableau, les comptes de lignes de totaux, les libellés de colonne de ligne de totaux, les fonctions de colonne de ligne de totaux, les formules de colonne calculée, les formules de ligne de totaux et l'échappement XML des métadonnées de colonne de tableau lors du flux des fichiers XLSX
Version 2.172.0
Added
TXLSDirectWriterécrit désormais les parties de tableau Excel lors du flux des fichiers XLSX, y compris les relations de tableau de feuille de calcul, les types de contenu de partie de tableau, les plages de tableau, les noms de colonne, les drapeaux de ligne d'en-tête et de ligne de totaux, et les drapeaux d'affichage de style de tableau intégré, sans construire un modèle d'objet de classeur complet
Version 2.171.0
Added
TXLSDirectWriterécrit désormais les validations de données de feuille de calcul lors du flux des fichiers XLSX, y compris les validations de liste, nombre entier, décimal, date, heure, longueur de texte, formule personnalisée,sqrefarbitraire, invite, alerte d'erreur, autorisation de vide, liste déroulante et drapeaux de message d'entrée/d'erreur, sans construire un modèle d'objet de classeur complet
Version 2.170.0
Added
TXLSDirectWriterécrit désormais les noms définis de classeur et locaux à la feuille lors du flux des fichiers XLSX, y compris les noms masqués, les commentaires, les plages absolues générées, les zones d'impression, les lignes de titre d'impression, les colonnes de titre d'impression, les titres d'impression combinés, les références de nom de feuille entre guillemets, l'échappement XML et la sémantique de remplacement pour les accesseurs de nom d'impression répétés, sans construire un modèle d'objet de classeur complet
Version 2.169.0
Added
TXLSDirectWriterécrit désormais les liens hypertexte de feuille de calcul lors du flux des fichiers XLSX, y compris les relations d'URL externe, mailto et de fichier, les emplacements internes de feuille, le texte affiché, les info-bulles, les plages de lien hypertexte à cellule unique ou multi-cellules, la normalisation des URLwww.nues, l'échappement XML et les cibles de relation codées en pourcentage, sans construire un modèle d'objet de classeur complet
Version 2.168.0
Added
TXLSDirectWriterécrit désormais les métadonnées d'impression et de vue de feuille lors du flux des fichiers XLSX, y compris les commutateurs d'affichage de grille et d'en-tête de ligne/colonne, les marges de page, le texte d'en-tête/de pied de page impair, les grilles et titres d'impression, le centrage de page, la taille de papier et l'orientation paysage, les dimensions d'ajustement à la page et les sauts de page manuels de ligne ou de colonne, sans construire un modèle d'objet de classeur complet
Version 2.167.0
Added
TXLSDirectWriterécrit désormais les métadonnées de mise en page de feuille de calcul lors du flux des fichiers XLSX, y compris les tailles par défaut de colonne et de ligne, les largeurs de colonne personnalisées, les lignes et colonnes masquées, les plages fusionnées, les plages AutoFilter, les volets figés, les couleurs d'onglet de feuille et les vues de feuille de droite à gauche, sans construire un modèle d'objet de classeur complet
Version 2.166.0
Added
- Les flux de travail XLSX en flux incluent désormais le listage des noms de feuille sans parcours de feuille de calcul, la sélection de feuille par curseur de ligne basé sur le nom, le flux de dates numériques brutes, la réutilisation du writer direct, l'écriture de cellules d'erreur et les writers de résultats de formule mis en cache pour les valeurs numériques, chaîne, booléennes, date et erreur
Version 2.165.0
Fixed
TXLSDirectReader.ReadStreamrestaure désormais la position du flux de l'appelant après l'analyse directe, en concordance avec le contrat de flux documenté et permettant aux applications de réutiliser le même flux après un passage de lecture directe
Version 2.164.0
Added
- Les exports de jeux de données de
TDataToXLSprennent désormais en charge les listes de chaînesIncludeFieldsetExcludeFields. Les applications peuvent placer en liste blanche les champs exportés, omettre les colonnes sensibles et garder les en-têtes, lignes de données, largeurs de colonne et rappels d'export alignés avec l'ensemble de champs sélectionné
Version 2.163.0
Added
- L'export CSV gagne un guillemetage de texte configurable à travers les moteurs XLS et XLSX.
TXLSWorkbookexpose désormaisCSVEmitFormulasetCSVQuoteAllStrings, etTXLSXWorkbookajouteCSVQuoteAllStrings. Lorsqu'ils sont activés, l'export de formule écrit le texte de formule et les champs chaîne sont entre guillemets, tandis que les champs numérique, date, booléen, Null et Empty conservent les règles de guillemetage normales
Version 2.162.0
Added
- Le moteur XLSX gagne un système d'événements de progression annulable. Un nouveau rappel
OnProgressExsurTXLSXWorkbookse déclenche en parallèle duOnProgressexistant avec trois améliorations : (1) un paramètreTXLSXProgressState(ppsBegin/ppsWork/ppsEnd) qui encadre chaque phase afin que les IHM sachent quand une opération commence et se termine ; (2) un paramètre varAbort: Booleanqui permet au rappel d'annuler l'opération courante en cours de flux — les boucles de lecture/écriture/calcul vérifientWorkbook.Abortedet s'interrompent proprement ; (3) une nouvelle phasexlsxProgressExportingpour les opérations d'export (HTML/RTF/CSV/ODS). Une méthode assistanteFireProgresscentralise la distribution à double rappel. Le drapeauFAbortedest réinitialisé au début de chaque opération de premier niveau (Open / SaveAs / Recalculate)
Version 2.161.0
Added
- Le modèle de graphique XLSX prend désormais en charge quatre nouveaux éléments de graphique pour une meilleure compatibilité avec Excel. Table de données du graphique (
c:dTable) :TXLSXChartgagne les commutateursShowDataTable+ShowDataTableKeys— lorsqu'ils sont activés, le writer émet l'élément de table de données à l'intérieur de la zone de tracé, de sorte qu'Excel rende les données source sous forme de grille sous l'axe du graphique. Barres hausse/baisse + lignes haut-bas (éléments de graphique bourse/OHLC) :TXLSXChartgagneHasUpDownBars+UpDownGapWidthetHasHiLowLines— le writer émetc:upDownBarsetc:hiLowLinesà l'intérieur de l'élément de graphique (graphiques en courbes/en bourse). Contrôles de vue 3D :TXLSXChartgagneRotation3DX/Rotation3DY/Elevation3D/Perspective3D/RightAngleAxes3D— le writer émetc:view3Dau niveau du graphique lorsqu'une propriété 3D diffère de la valeur par défaut. Auparavant, aucun de ces éléments n'était émis, de sorte que les graphiques construits avec des tables de données, des éléments de graphique boursier ou des vues 3D les perdaient lors de l'aller-retour
Version 2.160.0
Added
- Les références de formule s'ajustent désormais automatiquement lorsque des lignes ou des colonnes sont insérées ou supprimées dans le moteur XLSX. La méthode
ShiftSheetGeometry— appelée parInsertRows/DeleteRows/InsertCols/DeleteCols— parcourt désormais toutes les cellules de formule survivantes et réécrit leurs références A1 pour refléter le changement structurel. Un nouveau scanneur de texteXlsxAdjustFormulaRowColRefsdétecte les références à cellule unique (A1,$B$2) et de plage (A1:B3), décale leurs composantes ligne/colonne au-delà du point d'insertion et convertit les références supprimées en#REF!. Les références relatives et absolues sont toutes deux décalées (concordance avec le comportement d'Excel). Auparavant, les formules restaient silencieusement pointées vers les mauvaises cellules après une édition structurelle
Version 2.159.0
Added
- L'état de tri du filtre automatique réalise désormais l'aller-retour via le moteur XLSX.
TXLSXWorksheetgagne une propriétéSortStateXmlqui transporte le XML interne brut de l'élément OOXML<sortState>(direction de tri des colonnes, sensibilité à la casse, méthode de tri et chaque<sortCondition>avec son drapeau descendant + référence). Le writer émet l'élément après<autoFilter>; le lecteur analyse les attributs et conditions de tri en retour. Auparavant, l'état de tri était silencieusement supprimé à la lecture et jamais écrit - Les paramètres phonétiques/ruby CJK réalisent désormais l'aller-retour via le moteur XLSX.
TXLSXWorksheetgagnePhoneticFontId,PhoneticType(hiragana / katakana / fullWidthKatakana / noConversion) etPhoneticAlignment(left / center / distributed). Le writer émet<phoneticPr>après<sheetData>; le lecteur analyse les attributs en retour. Auparavant, l'élément phonétique était silencieusement supprimé à la lecture — les fichiers du marché japonais perdaient leurs paramètres d'aide à la lecture furigana
Version 2.158.0
Added
- Le moteur XLSX réalise désormais l'aller-retour de la table de styles de cellule nommées (
<cellStyles>). Une nouvelle classeTXLSXNamedStyle+ collectionTXLSXNamedStylessurTXLSXWorkbooktransporte la surface complète :Name,XfId,BuiltInId,CustomBuiltIn,Hidden,BuiltinLevel. Le writer émet un<cellStyle>par entrée lorsque la collection est non vide ; le lecteur les analyse en retour. Auparavant, le writer codait en dur une seule entrée"Normal"et le lecteur supprimait tous les styles nommés, de sorte que les fichiers avec styles « Good »/« Bad »/« Total »/nommés personnalisés perdaient ces noms lors de l'aller-retour
Version 2.157.0
Added
- Le moteur XLSX réalise désormais l'aller-retour de l'élément
<calcPr>complet, et non plus seulement les commutateurs de calcul itératif.TXLSXWorkbookgagneCalcId(l'identificateur de moteur de calcul qu'Excel utilise pour décider si les valeurs mises en cache sont périmées),FullCalcOnLoad(force Excel à effectuer un recalcul complet à l'ouverture — critique pour les classeurs produits par un moteur non Excel) etCalcMode(auto / manual / autoNoTable). Le writer émet les attributs correspondants sur<calcPr>; le lecteur les analyse en retour. Auparavant, seulsiterate/iterateCount/iterateDeltaétaient traités, et le reste était silencieusement supprimé
Version 2.156.0
Added
- L'évaluateur de formules implémente désormais 37 fonctions de feuille de calcul qui étaient précédemment enregistrées (ptg assigné dans InitFuncHash) mais sans implémentation de distribution — elles tombaient sur
#NAME?. Les nouvelles implémentations couvrent cinq familles de fonctions : Régression (FORECAST,LINEST,TREND,GROWTH,LOGEST,CORREL,PEARSON,SLOPE,INTERCEPT,RSQ,STEYX), Amortissement (SLN,SYD,DB,DDB,VDB), Statistiques descriptives (AVEDEV,DEVSQ,KURT,SKEW,GEOMEAN,HARMEAN,TRIMMEAN,FREQUENCY), Tableau par paires (SUMXMY2,SUMX2MY2,SUMX2PY2) et Combinatoire/Mathématiques (COMBIN,PERMUT,FACT,QUOTIENT,ROMAN,DEGREES,RADIANS,STANDARDIZE). Les fonctions de régression utilisent un solveur des moindres carrés ; les fonctions d'amortissement implémentent les méthodes linéaire, somme des chiffres des années et dégressives ; les fonctions de statistiques descriptives calculent l'écart absolu moyen, le kurtosis, l'asymétrie, les moyennes géométrique/harmonique/rognée ; et les fonctions par paires calculent la somme des carrés des différences entre deux plages de même taille. Un nouvel assistantCollectRangeValuessurTXLSCalculatorextrait les valeurs numériques des arguments de plage pour les fonctions statistiques
Version 2.155.0
Added
- L'évaluateur de formules prend désormais en charge cinq noms de compatibilité statistiques et d'ingénierie supplémentaires :
ERFC,ERFC.PRECISE,BINOM.INV,CHI.INV.RTetF.TEST.ERFCcomplète la série des fonctions d'erreur existante,BINOM.INVrecherche le seuil de CDF binomiale,CHI.INV.RTalias l'inverse du Khi-deux de queue droite, etF.TESTrenvoie la p-value bilatérale de variance d'échantillon
Version 2.154.0
Added
- L'évaluateur de formules résout désormais les références inter-classeurs via un nouveau rappel
OnGetExternalValuesurTXLSCalculator. Lorsqu'une référence de plage 3D pointe vers un classeur externe ([1]Sheet1!A1), l'évaluateur passe par le rappel au lieu de renvoyer#REF!. Le moteur XLSX câble ce rappel àGetExternalCellValue, qui mappe l'index SupBook + l'index de feuille au cache<sheetDataSet>duTXLSXExternalLinkcorrespondant et décode la valeur de cellule mise en cache selon son attribut de type OOXML (numérique / booléen / chaîne / erreur). Auparavant, les formules inter-classeurs renvoyaient#REF!inconditionnellement ; l'infrastructure de rappel permet désormais à tout moteur (BIFF8, XLSX ou un hôte de calculateur personnalisé) de fournir des valeurs externes - L'évaluateur de formules effectue désormais la diffusion de tableau élément par élément sur les opérateurs binaires (
+/-/*///^). Lorsqu'un opérande est un tableau de variantes 1D ou 2D (par exemple un résultat de fonction matricielle, une plage débordée ou un opérande de tableau CSE), l'opérateur est appliqué élément par élément ; un opérande scalaire est diffusé à chaque élément du tableau. Le nouvel assistantApplyArrayBinaryOpgère la validation de forme, la diffusion scalaire et la propagation de la division par zéro. L'arithmétique scalaire héritée est inchangée — le chemin tableau ne s'active que lorsqu'au moins un opérande est un tableau de variantes - L'évaluateur de formules reconnaît désormais la fonction
TABLE(Table de données d'analyse What-If). Excel stocke les tables de données sous forme de formules de tableau CSE dont le corps estTABLE(rowRef, colRef); auparavant,TABLEn'était pas reconnue et tombait sur#NAME?. La fonction est enregistrée avec un ptg synthétique (ftabTABLE = 4232) afin qu'elle réalise l'aller-retour via l'encodage de formule BIFF8, et lors de l'évaluation renvoie une valeur d'emplacement (0) — les résultats réels sont précalculés par Excel et stockés en tant que valeurs de cellule mises en cache, donc HotXLS ne réévalue pas la logique de substitution
Version 2.153.0
Added
- Le modèle typé du tableau croisé transporte désormais les propriétés typées de l'axe de page (Hier / Caption / Name), la portée de tri automatique et les hooks d'aller-retour XML brut pour
<formats>et<extLst>nécessaires à une meilleure compatibilité avec Excel.TXLSPivotFieldgagnePageHier/PageCaption/PageName(F16 — nom de hiérarchie OLAP + libellé d'axe de page + nom d'affichage) etAutoSortScope(F20 — référence de plage A1 figeant les cellules qu'Excel utilise pour trier automatiquement les éléments du champ) ;TXLSPivotTablegagneFormatsXml/ExtLstXml(F17 — aller-retour de XML interne brut pour le bloc de substitutions CF / format numérique<formats>et le bloc segment / chronologie / x14<extLst>, émis tel quel lorsqu'il est défini, de sorte que l'aller-retour reste sûr même entre versions de moteur). Le writer XLSX émet les attributs correspondants<pageField hier=... cap=... name=.../>, l'enfant<autoSortScope>de<pivotField>, et les blocs<formats>+<extLst>avant la sentinelle de fermeture - Le traceur de formules enregistre désormais des instantanés de pile d'opérandes à chaque étape, permettant un vrai débogueur pas-à-pas « Évaluer la formule ».
TXLSFormulaStepgagneStepKind(push / reduce / function),StackBefore/StackAfter(instantanés séparés par virgules de la pile d'opérandes au moment où chaque étape a commencé / s'est terminée) etTokenStart/TokenEnd(intervalle de caractères en base 1 rattachant l'étape à la formule source).TXLSFormulaTracergagneTraceReversed(renvoie les mêmes étapes dans l'ordre inverse d'évaluation — utile pour une IHM de retour en arrière allant du résultat final vers les opérandes d'origine) et une propriétéStepCount. Auparavant, le traceur n'enregistrait que Depth / Source / Expression / Value sans état de pile - L'export HTML intègre désormais les images par cellule via un nouveau rappel
OnCellImagesurTXLSHTMLExportet une nouvelle optionxhImages. Lorsque l'option est définie et le rappel câblé, l'exportateur demande à l'implémentateur le fragment<img>de chaque cellule (généralement un data-URI Base64) et l'ajoute après le texte de la cellule. Cela découple l'exportateur du stockage d'images BIFF8 du moteur XLS (qui vit dans l'enregistrement MsoDrawing par feuille), de sorte que l'exportateur n'a pas à analyser lui-même les ancres. L'export HTML du moteur XLSX intégrait déjà les images ; cela comble le manque pour le moteur XLS - L'import RTF applique désormais les propriétés de caractère (gras / italique / souligné / barré / taille) des mots de contrôle RTF à la police de la cellule de destination.
TXLSRTFImportsuit\b/\i/\ul/\strike/\fsà travers le document et pousse la mise en forme de l'exécution dominante dans le XF de la cellule lors de la validation. Une nouvelle propriétéImportCharFormat(True par défaut) bascule le comportement ; mettre à False pour restaurer l'import texte seul hérité. Les cellules multi-exécutions se réduisent à un seul XF (la dernière exécution active l'emporte) puisque l'API de cellule du moteur XLS est au niveau cellule, et non par fragment — mais cela reste bien meilleur que de supprimer toute la mise en forme, ce que faisait l'importateur hérité - Une nouvelle classe
TXLSHTMLImportanalyse les tables HTML en cellules de feuille de calcul. Elle parcourt le premier<table>de la source, émettant une ligne de feuille de calcul par<tr>et une cellule par<td>/<th>. Elle honorecolspan/rowspan(fusion style Excel), supprime les balises à l'intérieur d'une cellule (en réduisant la mise en forme imbriquée en texte brut), décode les cinq entités de caractère standard (&/</>/"/'/ ) et les formes numériques&#NNN;/&#xNN;, et convertit les chaînes numériques propres en Double afin que les tables importées restent calculables. Conçu pour la sortie produite par HotXLS lui-même (SaveAsHTML) ainsi que pour les tables HTML de qualité copier-coller générales ; il ne s'agit pas d'un analyseur HTML5 complet
Version 2.152.0
Added
- Les tableaux XLSX conservent désormais les métadonnées de totaux au niveau des colonnes et les formules de tableau.
TXLSXTableexposeColumnTotalsRowFunctions[],ColumnTotalsRowLabels[],ColumnCalculatedColumnFormulas[]etColumnTotalsRowFormulas[];SaveAsémet le XML de colonne de tableau correspondanttotalsRowFunction,totalsRowLabel,calculatedColumnFormulaettotalsRowFormula,Openles relit et les clones de tableau les préservent
Version 2.151.0
Added
- Le modèle typé du tableau croisé transporte désormais la collection de filtres par champ, le commutateur de sélection multiple, la surface fieldGroup discretePr + groupItems, et le modèle d'éléments calculés / membres calculés nécessaires à une meilleure compatibilité du tableau croisé.
TXLSPivotFieldgagne une collection typéeTXLSPivotFilters(chaque entrée porte unFilterTypeparmi l'énumération OOXMLST_FilterTypede 80 membres — familles count / percent / sum / caption / value / date — plusValue1/Value2/StrValue1/StrValue2,EvalOrder,DataField,MemberPropertyId,Name,Description), un commutateurMultipleItemSelectionAllowed(F9) et une collectionTXLSPivotCalculatedItem(F14).TXLSPivotCacheFieldgagneDiscreteIndices[]+AddDiscreteIndexetGroupItemLabels[]+AddGroupItempour les blocs fieldGroup discretePr + groupItems (F13).TXLSPivotTablegagne une collectionTXLSPivotCalculatedMember(F14). Le writer XLSX émet le<pivotField multipleItemSelectionAllowed="1">correspondant, le bloc par champ<filters><filter .../>, l'élément<fieldGroup><discretePr>...</discretePr><groupItems>...</groupItems></fieldGroup>, le bloc par champ<calculatedItems>et le bloc au niveau table<calculatedMembers>— de sorte que les tableaux croisés construits par programme avec filtres / sélection multiple / regroupement / éléments calculés réalisent l'aller-retour
Version 2.150.0
Added
- Les noms définis conservent désormais la validité de leur texte de formule lorsque la feuille de calcul qu'ils référencent est supprimée ou renommée. La suppression d'une feuille réécrit chaque qualificateur
SheetN!à l'intérieur de la formule d'un nom défini en#REF!(concordance avec le comportement d'Excel) ; le renommage d'une feuille réécrit le qualificateur avec le nouveau nom. Auparavant, le texte de formule continuait de pointer vers un nom de feuille inexistant, qu'Excel signalait alors comme lien brisé à la réouverture - Le modèle typé du tableau croisé transporte désormais l'ordre de tri au niveau du champ et les commutateurs de mise en page, ainsi que les attributs de mise en page / d'affichage au niveau table nécessaires à une meilleure compatibilité de mise en page du tableau croisé.
TXLSPivotFieldgagneSortType(manual / ascending / descending),Compact,Outline,SubtotalTop,DragToRow/DragToCol/DragToPage/DragToData,ShowAll,InsertBlankRow,NumFmtId;TXLSPivotTablegagneCompact/CompactData/Outline/OutlineData/Indent/ShowEmptyRow/ShowEmptyCol/ShowHeaders/ShowDrill/EnableDrill/FieldListSortAscending/GridDropZonesplusRowHeaderCaption/ColHeaderCaption/ErrorCaption/MissingCaption/ShowError/ShowMissinget la paire de mise en page d'axe de pageRowPageCount/ColPageCount. Le writer XLSX émet les attributs correspondants<pivotField sortType=... compact=... outline=...>et<pivotTableDefinition indent=... outline=... showEmptyRow=...>ainsi que l'élément<location rowPageCount=... colPageCount=.../>, de sorte que les tableaux croisés construits par programme portent la mise en page définie par l'utilisateur au lieu des valeurs par défaut d'Excel - Une nouvelle méthode
FormulaIsVolatilesurTXLSWorkbookindique si une formule forcerait un recalcul à chaque passe de calcul — c'est-à-dire qu'elle appelle une fonction volatile (NOW / RAND / TODAY / OFFSET / INDIRECT) ou porte une référence non résolvable. La sonde partage le même extracteur de dépendances que le moteur de recalcul, de sorte que la réponse correspond à ce queRecalculatefait réellement. Les appelants peuvent l'utiliser pour signaler des cellules à une IHM de vérification, pour peupler un ensemble volatile de chaîne de calcul sur un classeur neuf, ou pour ignorer la mise en cache du résultat d'une formule fraîchement saisie
Version 2.149.0
Added
- Les caches de tableau croisé peuvent désormais être rafraîchis depuis leur plage source par programme. Une nouvelle méthode
RefreshPivotCache(ACacheId)surTXLSXWorkbookréanalyse la plage source du cache, reconstruit le domaine des éléments partagés par champ (en redédupliquant les valeurs et en redérivant les bornes par type) et réécrit les index d'éléments par enregistrement. Auparavant, HotXLS s'appuyait sur le drapeau codé en durrefreshOnLoad="1"et déférait tout le travail de rafraîchissement à Excel à la prochaine ouverture ; les pipelines programmatiques peuvent désormais rafraîchir en cours de processus
Version 2.148.0
Added
InsertColssur le moteur XLSX hérite désormais de la largeur de colonne de son voisin de gauche, en concordance avec le comportement par défaut d'Excel pour « insérer une colonne ». Auparavant, la colonne insérée reprenait la largeur par défaut du classeur, produisant un écart de fidélité visible après une réouverture- Le moteur XLSX gagne des assistants pratiques de repli de plan
ToggleColGrouped/ToggleRowGroupedsurTXLSXWorksheet, qui parcourent l'arborescence du plan et replient ou déploient le groupe à un niveau donné. Les drapeaux de repli eux-mêmes réalisaient déjà l'aller-retour ; cela ajoute l'API pratique de parcours d'arborescence qui manquait
Version 2.147.0
Added
- L'export HTML émet désormais des ancres
<a name>aux cellules qui sont des cibles de lien hypertexte internes, de sorte que les liens hypertexte#SubAddressse résolvent correctement lorsque le lecteur clique dessus. Auparavant, les liens étaient émis mais les cibles n'avaient pas d'ancres, de sorte que les sauts internes ne se résolvait en rien - L'export CSV a gagné une propriété
CSVEmitFormulassurTXLSXWorkbook. Lorsqu'elle vaut True, les cellules de formule exportent leur texte de formule (=SUM(A1:A2)) au lieu de la valeur calculée — utile pour le débogage et pour les pipelines qui réimportent dans un moteur différent - Les URL de liens hypertexte externes sont désormais codées en pourcentage à l'écriture (
XlsxEncodeHyperlinkUrl) : espace, chevrons, guillemets, accolades, barres verticales, barres obliques inverses, accents circonflexes et accents graves sont codés en%XXdans l'attribut<Relationship Target="..."/>afin que le fichier s'ouvre correctement dans tout navigateur. Les séquences existantes codées en pourcentage (%20) sont préservées telles quelles - Les informations de style du tableau croisé transportent désormais la surface complète
pivotTableStyleInfo:StyleName,ShowRowHeaders,ShowColHeaders,ShowRowStripes,ShowColStripes,ShowLastColumnsurTXLSPivotTable. Le writer XLSX émet l'élément correspondant, de sorte que les tableaux croisés construits par programme portent le style de bande défini par l'utilisateur au lieu du style par défaut codé en dur - Une nouvelle méthode
CalculateAndVerifysurTXLSXWorkbookréévalue chaque cellule de formule et compare le résultat calculé à la valeur mise en cache de la cellule. Elle renvoie le nombre de non-correspondances (0 = toutes les valeurs mises en cache correspondent au calcul frais du moteur ; les formules volatiles sont exclues). Utile en QA lors du portage de classeurs entre moteurs ou pour valider qu'un writer n'a pas corrompu les valeurs mises en cache
Version 2.146.0
Added
- Le moteur XLSX prend désormais en charge le calcul itératif des références circulaires (mode de calcul itératif d'Excel). Un triplet de propriétés
Iterate/IterateCount/IterateDeltasurTXLSXWorkbookcontrôle le comportement : lorsqueIterate=Trueet qu'un cycle de référence est détecté pendantRecalculate, le moteur réévalue les cellules membres du cycle jusqu'àIterateCountfois (100 par défaut) ou jusqu'à ce que le changement de chaque cellule soit< IterateDelta(0,001 par défaut), au lieu de renvoyer#REF!. Les paramètres réalisent l'aller-retour via l'élément OOXML<calcPr iterate="1" iterateCount="N" iterateDelta="X"/>. Les modèles financiers avec références circulaires intentionnelles (intérêts sur intérêts, allocations circulaires) convergent désormais au lieu de produire des erreurs - Les champs de cache du tableau croisé portent désormais un modèle de regroupement pour le regroupement par plage numérique et par hiérarchie de dates.
TXLSPivotCacheFieldgagneHasGroup+GroupStartNum/GroupEndNum/GroupInterval(plage numérique) etGroupByDate/GroupDays/GroupMonths/GroupQuarters/GroupYears/GroupHours/GroupMinutes/GroupSeconds/GroupStartDate/GroupEndDate(date). Le writer XLSX émet l'élément<fieldGroup><rangePr groupBy="range|days|months|..."/>de sorte que les tableaux croisés construits par programme avec champs regroupés correspondent à la sortie d'Excel - L'export HTML émet désormais des notes de fin de commentaire. Lorsque
xhCommentsfigure dans les options d'export, chaque cellule commentée obtient un lien en exposant[n], et le texte complet du commentaire (auteur + corps) est listé comme une section de notes de fin après le tableau, avec une ancre de retour vers la cellule. Auparavant, les commentaires n'étaient disponibles que via l'attributtitle=de la cellule, invisible à l'impression ou au copier-coller
Version 2.145.0
Added
- Les littéraux d'erreur de formule BIFF8 (jeton
tErr) se décodent désormais en un élément de syntaxe typéSA_ERRORau lieu de faire échouer l'analyse de formule. Une cellule stockant=#N/A(ou l'une des sept constantes d'erreur d'Excel) provoquait auparavant l'abandon de toute la formule à la lecture ; l'octet d'erreur réalise désormais l'aller-retour lecture → évaluation → écriture et se reconstruit sous sa forme texte (#NULL!,#DIV/0!,#VALUE!,#REF!,#NAME?,#NUM!,#N/A) via un nouvel assistantXlsErrorToString - Le jeton BIFF8
tIsect $0F(opérateur d'intersection implicite) se décode désormais dans le traducteur de formules binaire, construisant le même nœudSA_ISECTque l'analyseur de texte produit pour@. Auparavant, une formule binaire contenanttIsectéchouait à l'analyse - La mise en forme conditionnelle par barres de données émet désormais le bloc d'extension
x14d'Excel 2010+ dans leextLstde la feuille de calcul lorsque le modèle porte un champ x14 non défaut quelconque (couleur de remplissage négative, dégradé désactivé, couleur d'axe, direction, bordure). Un nouveauBuildDataBarExtXmlconstruit l'élémentext<x14:conditionalFormattings>avec la priorité correspondante, la paire cfvo, les couleurs de remplissage + négative + axe, et les attributs gradient/border/direction/negativeBarColorSameAsPositive
Version 2.144.0
Added
- Le moteur XLSX peut désormais écrire des classeurs chiffrés Agile (
TXLSXWorkbook.SaveAsEncryptedAgile), comblant un manque de compatibilité lecture/écriture de grande valeur. Agile est ce qu'Excel 2010+ écrit par défaut pour les fichiers .xlsx protégés par mot de passe ; HotXLS pouvait auparavant lire Agile mais seulement écrire en chiffrement standard (AES-128). Le nouveau pipeline d'écriture reflète le chemin de déchiffrement existant : hachage de mot de passe SHA-512 avec un compteur de rotation de 100000 itérations, chiffrement de paquet AES-256-CBC par segment, une clé intermédiaire générée aléatoirement enveloppée selon les trois clés de bloc épinglées par la spécification, et un descripteur XML<encryption>complet portant le vérificateur chiffré + les blobs de clé. La sortie est fidèle à l'octet à ce qu'Excel produit et réalise proprement l'aller-retour viaXlsLoadAgileEncryptedFile(vérifié par test : le mot de passe correct déchiffre, le mauvais est rejeté) - De nouvelles primitives cryptographiques soutiennent le chemin d'écriture Agile :
XlsHMACSHA512(RFC 2104, nécessaire pour l'élémentdataIntegrity),XlsBase64Encode(encodeur RFC 4648 qui reflète le décodeur existant) etAESEncryptCBC(chiffrement AES-CBC pour toute taille de clé 128/192/256, l'inverse duAESDecryptCBCexistant). L'unité AES importe désormaisaes_encrypt_key192/aes_encrypt_key256depuis l'obj Gladman (auparavant, seul le chiffrement 128 bits était disponible)
Version 2.143.0
Added
- L'évaluateur de formules analyse et évalue désormais l'opérateur d'intersection explicite
@(syntaxe de tableau dynamique Excel 365, par exemple=A2:A4 @ B2:B4). L'analyseur lexical émet un nouveau jetonLT_ISECTpour le symbole@, l'analyseur de précédence construit un nœudSA_ISECT(liant plus fort que^, plus lâche que%), et un nouvel évaluateurIntersectRangesrésout les deux opérandes en plages et renvoie la valeur de l'unique cellule d'intersection — la règle d'intersection implicite d'Excel. Le sérialiseur de jetons BIFF émettIsect $0Fde sorte que l'opérateur réalise l'aller-retour via XLS, et le chemin de reconstruction du texte de formule émet la forme implicite par espace. Auparavant, de telles formules échouaient à l'analyse - Un encodeur Base64 standard (
XlsBase64Encode) est désormais disponible, reflétant leXlsBase64Decodeexistant. Il s'agit du prérequis du chemin d'écriture à chiffrement Agile, qui émet saltValue / encryptedVerifierHashInput / encryptedKeyValue / encryptedHmacValue en tant que valeurs d'attribut Base64 - L'événement
OnProgressdu classeur se déclenche désormais aussi pendant le recalcul complet (Recalculate), avec une nouvelle phasexlsxProgressCalculating. Auparavant, l'événement ne se déclenchait qu'en lecture et écriture, de sorte que les longs recalculs complets ne donnaient aucune pulsation à l'IHM. L'événement se déclenche environ tous les 4 % des cellules pour éviter la saturation - Les propriétés étendues du document (
docProps/app.xml) réalisent désormais l'aller-retour de trois champs supplémentaires qu'Excel écrit pour les documents protégés par mot de passe / fondés sur modèle :Manager,TemplateetDocSecurity(un champ de bits : 1=protégé par mot de passe, 2=lecture seule recommandée, 4=lecture seule imposée, 8=verrouillé pour annotation)
Version 2.142.0
Added
- Le modèle typé du tableau croisé transporte désormais la surface de métadonnées, source, champ calculé, « afficher les valeurs sous forme » et bornes d'éléments partagés que la précédente passe d'analyse avait signalée comme manques.
TXLSPivotCachegagneRefreshOnLoad/RefreshedBy/RefreshedDate/MissingItemsLimit/CreatedVersion/RefreshedVersion/MinRefreshableVersion/EnableRefresh/BackgroundQuery/SaveDataplus une forme typée de source de feuille de calcul (SourceName/SourceRelId/SourceIsNamedRange) ;TXLSPivotCacheFieldgagneFormula/DatabaseField/MemberPropertyField(champs calculés) et les bornes d'éléments partagés (ContainsBlank/ContainsInteger/ContainsString/ContainsNumber/ContainsDate/MinValue/MaxValue/MinDate/MaxDate/HasBounds) ;TXLSPivotDataFieldgagneShowDataAs/BaseField/BaseItempour les transformations « afficher les valeurs sous forme » (pourcentage de / différence / cumul / index). Le writer XLSX (BuildPivotCacheDefinitionXml/BuildPivotTableXml) honore tout cela, de sorte qu'un tableau croisé construit par programme (AddPivotTable) émet unpivotCacheDefinition+pivotTableDefinitionplus riche — refreshOnLoad / triplet de versions / refreshedBy / source plage nommée / formule de cacheField calculé / bornes sharedItems / sous-total dataField + showDataAs. Les tableaux croisés lus depuis un fichier continuent de réaliser l'aller-retour de leur XML brut tel quel - Le comportement d'ancrage d'image réalise désormais l'aller-retour via une nouvelle propriété
AnchorTypesurTXLSXImage(xaTwoCell= déplacer et redimensionner avec les cellules,xaOneCell= déplacer sans redimensionner,xaAbsolute= ni déplacer ni redimensionner). Le writer choisit l'élément d'ancrage (xdr:oneCellAnchor/xdr:twoCellAnchor editAs=.../xdr:absoluteAnchor) en conséquence ; le lecteur analyse le nom d'élément + l'attributeditAsen retour. Cela correspond au clic droit → Taille et propriétés → boîte de dialogue Propriétés d'Excel - L'en-tête/pied de page réalise désormais l'aller-retour de la différenciation pages paires / première page.
TXLSXWorksheetgagneEvenHeaderText/EvenFooterText/FirstHeaderText/FirstFooterTextplus les quatre commutateurs<headerFooter>(DifferentOddEven,DifferentFirst,ScaleWithDoc,AlignWithMargins). Les fichiers où l'utilisateur a activé « Pages paires et impaires différentes » ou « Première page différente » ne perdent plus les sections de page paire / première page lors de l'aller-retour - La mise en page réalise désormais l'aller-retour des attributs étendus
<pageSetup>qu'Excel écrit pour les configurations d'impression non par défaut :Copies,FirstPageNumber+UseFirstPageNumber,HorizontalDpi,VerticalDpi,PrintErrors(displayed/blank/dash/NA),UsePrinterDefaults <sheetFormatPr>réalise désormais l'aller-retour decustomHeight,zeroHeight,outlineLevelRowetoutlineLevelCol, de sorte que les fichiers où l'utilisateur a défini une hauteur de ligne par défaut épinglée par l'utilisateur, des lignes masquées par défaut ou un niveau de plan par défaut ne perdent plus ce comportement- La mise en forme conditionnelle par barres de données réalise l'aller-retour de l'attribut standard
gradient(dégradé ou remplissage uni), etTXLSDataBarSpecgagne les champs d'extensionx14d'Excel 2010+ (NegativeBarColor,NegativeBarColorSameAsPositive,GradientFill,AxisColoravec theme/tint,Direction,Border) sur le modèle, pour que les consommateurs de l'API puissent les définir - Les bulles de commentaire réalisent l'aller-retour de leur dessin VML tel quel. Le lecteur capture
xl/drawings/vmlDrawingN.vmltel quel et le writer le rejoue à l'enregistrement (au lieu du modèle intégré de bulle jaune), de sorte que la position / taille / couleur de remplissage / visibilité définies par l'utilisateur de chaque bulle survivent - Les corps de commentaire réalisent l'aller-retour de la mise en forme par run.
TXLSXCommentgagne une charge utile paresseuseRichText: TXLSXRichText(qui réutilise le modèle de run des chaînes partagées) ; l'enregistreur émet un<r><rPr>...</rPr><t>...</t></r>par run quand RichText porte de la mise en forme, et le lecteur analyse en retour<b/>,<i/>,<sz val=N/>,<color rgb=.../>, afin que gras / italique / taille / couleur survivent - L'évaluateur de formules implémente désormais
SUBTOTAL(les onze agrégateurs : AVERAGE / COUNT / COUNTA / MAX / MIN / PRODUCT / STDEV / STDEVP / SUM / VAR / VARP, plus les variantes 101à 111 ignorant les masquées) etAGGREGATE(dix-neuf agrégateurs avec les drapeaux de code d'option 0à 7 sélectionnant l'ignorance des erreurs/masquées, y compris la famille LARGE / SMALL / MEDIAN / PERCENTILE / QUARTILE avec leur argumentk). Tous deux tombaient auparavant sur le chemin de fonction non prise en charge ;SUBTOTALétait enregistrée mais sans implémentation,AGGREGATEn'était pas enregistrée du tout - Les fonctions de feuille
CELLetINFOsont désormais évaluées :CELLprend en chargeaddress,col,row,type,contents,filename,format, et lesinfo_typed'état GUI (color,parentheses,prefix,protect,width) renvoient des valeurs neutres par défaut ;INFOprend en chargeosversion,system,recalc,memavail,numfile,release,origin. Les deux étaient enregistrées mais tombaient sur#NAME? - La mise en forme conditionnelle réalise désormais l'aller-retour des attributs
stopIfTrue,stdDev,equalAverageettimePerioddecfRule, plus la famille complètetimePeriodde dix membres (yesterday / today / tomorrow / last7Days / lastWeek / thisWeek / nextWeek / lastMonth / thisMonth / nextMonth). Ils étaient silencieusement supprimés à la lecture ; Excel les écrit couramment sur les règles au-dessus de la moyenne et de bande de dates, et les supprimer modifiait la façon dont la règle se réévaluait à la réouverture - L'export CSV a gagné une propriété
TXLSCsvEncodingsurTXLSCSVSaveravec trois modes :ceSystemAnsi(valeur héritée par défaut),ceUtf16(le mode Unicode historique) etceUtf8qui écrit un fichier UTF-8 avec la marque d'ordre des octets EF BB BF — la valeur par défaut moderne adaptée à Excel qui se rouvre sans l'assistant d'import de texte sur toute locale - L'import CSV a gagné une propriété
LocaleTolerantNumberssurTXLSCSVLoader. Lorsqu'elle est activée, un champ numérique qui échoue à l'analyse avec.comme séparateur décimal est réessayé avec,(et inversement), de sorte qu'un3,14européen s'importe comme le nombre 3,14 sur une machine américaine. Le mode strict (par défaut) est inchangé, de sorte que le texte à zéro non significatif, les codes postaux et les autres jetons porteurs de virgule restent du texte
Fixed
- L'inférence numérique en mode strict du moteur XLSX ne convertit plus les champs texte porteurs de virgule (par exemple
3,14) en nombres via leTryStrToFloatde Delphi, qui tolère une virgule comme séparateur de milliers même lorsqueThousandSeparatorvaut#0. Ces champs restent désormais du texte à moins que la nouvelle optionLocaleTolerantNumbersne soit activée
Version 2.140.0
Changed
- Le moteur XLSX compacte désormais ses six pools de style par attribut (Fonts / Fills / Borders / NumberFormats / Alignments / Protections) avant chaque enregistrement : une nouvelle passe
CompactStylePoolsparcourt les index de style de chaque cellule et supprime les entrées de pool qui ne sont plus référencées par aucune cellule — les entrées qui s'accumulent lorsque des cellules sont effacées, supprimées ou restylées après que l'entrée de pool a été ajoutée. Les pools compactés produisent une table<cellXfs>plus petite dans le fichier de sortie (généralement 30à 70 % plus petite pour les documents ayant traversé plusieurs cycles d'édition), en concordance avec la compaction que le moteur XLS effectue déjà viaCreateAllReferredList
Version 2.139.0
Added
- Les formes de couche de dessin, connecteurs, formes de groupe et cadres graphiques non graphiques réalisent désormais l'aller-retour tels quels : lorsque le lecteur XLSX rencontre une ancre
<xdr:sp>,<xdr:cxnSp>,<xdr:grpSp>ou<xdr:graphicFrame>non graphique que le modèle typé (images / graphiques / zones de texte) ne couvre pas, il capture le XML complet de l'ancre et le rejoue inchangé à l'enregistrement — de sorte que les dessins créés dans Excel (flèches, bulles d'appel, formes groupées, cadres smart art) survivent à un cycle lecture→écriture sans perte. Chaque feuille de calcul exposeRawDrawingAnchorCount/RawDrawingAnchor(i)pour l'inspection
Version 2.138.0
Added
- Les valeurs de cellule mises en cache des liens externes réalisent désormais l'aller-retour sur le moteur XLSX : un nouveau modèle
TXLSXExternalCell/TXLSXExternalRow/TXLSXExternalSheetDatapend de chaqueTXLSXExternalLinkviaAddSheetData/AddRow/AddCell, le writer émet le bloc<sheetDataSet>correspondant à l'intérieur deexternalLinkN.xml, et la réouverture restaure chaque valeur mise en cache.FindCachedCell(sheetIdx, row, col)recherche la dernière valeur connue d'une cellule référencée extérieurement — les données qu'Excel lui-même affiche lorsque le classeur distant est hors ligne
Version 2.137.0
Added
- Le drapeau OOXML cellXf
quotePrefix— mécanisme d'Excel pour marquer le texte stocké comme littéral afin qu'il survive à la conversion numérique (codes importés depuis CSV comme00123, longs numéros de compte, tout ce que l'utilisateur a préfixé d'une apostrophe) — réalise désormais l'aller-retour sur le moteur XLSX :TXLSXAlignmentgagne une propriétéQuotePrefix, le pool d'alignement en tient compte dans la déduplication, le writer émetquotePrefix="1"sur le<xf>correspondant, et la réouverture le restaure que le cellXf ait porté un enfant<alignment/>ou ait été un<xf quotePrefix="1"/>auto-fermant nu
Version 2.136.0
Added
- Les axes de graphique sont désormais entièrement programmables : un nouveau modèle
TXLSXChartAxissur leCategoryAxiset leValueAxisde chaque graphique exposeLogBase(échelle logarithmique, par ex. 10 pour le log en base 10),Orientation(normal / reversed),MajorGridlines/MinorGridlines,MinValue/MaxValue(NaN = auto),MajorUnit/MinorUnit,CrossesAt,TickLblPosetDispUnits(unités d'affichage : centaines / milliers / millions / milliards / billions). Tout vaut par défaut le comportement auto d'Excel, de sorte que les graphiques existants émettent le même XML qu'avant ; le writer ajoute<c:logBase>,<c:orientation>,<c:majorGridlines>,<c:majorUnit>,<c:crossesAt>,<c:tickLblPos>et<c:dispUnits>uniquement lorsque l'appelant définit une valeur non défaut, et la réouverture d'un tel graphique restaure chaque réglage
Version 2.135.0
Added
- Les barres d'erreur de graphique sont désormais programmables et réalisent l'aller-retour sur le moteur XLSX : chaque
TXLSXChartSeriesgagneAddErrorBar(dir)renvoyant unTXLSXChartErrBaravecValueType(fixed / percentage / stdDev / stdErr / custom),Value,PlusValue/MinusValue(custom) etNoEndCap; un emplacement de barre d'erreur par direction (X / Y) est stocké, le writer émet le bloc<c:errBars>correspondant, et la réouverture restaure la direction, le type et l'amplitude, de sorte que les graphiques scientifiques / d'ingénierie conservent leurs indicateurs d'incertitude
Version 2.134.0
Added
- Les étiquettes de données de graphique sont désormais programmables et réalisent l'aller-retour sur le moteur XLSX : chaque
TXLSXChartSeriesgagne les propriétésShowValue,ShowCategoryName,ShowSeriesName,ShowLegendKey,ShowPercent,ShowBubbleSizeetSeparatorqui émettent le bloc<c:dLbls>correspondant avec ses enfants<c:show*/>; la réouverture d'un tel graphique restaure les commutateurs, de sorte que les réglages « afficher la valeur » / « afficher le pourcentage » survivent à un cycle enregistrer-modifier-enregistrer
Version 2.133.0
Added
- Les formats d'image vectorielle EMF et WMF sont désormais des types d'image de premier rang sur le moteur XLSX :
TXLSXImageFormatgagnexlsxImageEmf/xlsxImageWmf, le writer émet les types de contenuimage/x-emf/image/x-wmfcorrespondants et les extensions.emf/.wmf, et le détecteur de format reconnaît les en-têtes EMF (01 00 00 73), WMF localisable (D7 CD C6 9A) et WMF standard — de sorte que les images collées depuis Word ou PowerPoint qu'Excel intègre en tant que données vectorielles réalisent désormais l'aller-retour au lieu d'être supprimées
Fixed
- Les sous-flux de graphique BIFF8 dont l'enregistrement GELFRAME (
$1066) chevauche la limite de continuation de 8224 octets ne perdent plus la géométrie de remplissage/tracé : le lecteur accepte désormais l'auto-continuation de GELFRAME (Excel écrit un autre$1066au lieu du$003CCONTINUE standard) et laisse aussi les enregistrements CONTINUE standard se recoudre dans le contexte du graphique, en concordance avec la distribution multi-blocs existante du writer - Les images d'arrière-plan d'en-tête/pied de page BIFF8 (
$0866) dont la charge utile chevauche les enregistrements de continuation ne se corrompent plus : chaque segment de continuation répète un en-tête MSO de 14 octets que le lecteur supprime désormais avant la concaténation, de sorte que les données d'image intégrées ne sont plus décalées de 14 octets par segment
Version 2.132.19
Fixed
- Le nettoyage du stockage XLS hérité et XLSX chiffré libère désormais de façon déterministe les flux de fichier composé, empêchant les fichiers temporaires de rester verrouillés après les opérations d'enregistrement, de chargement, de VBA ou de paquet chiffré
- L'affichage mis en forme des valeurs de variantes entières étendues applique désormais le format numérique demandé de manière cohérente, en concordance avec le comportement existant pour les valeurs entières standard
- Les chaînes partagées, la validation des données, les feuilles de graphique, les archives ZIP, le dessin PNG et les formules de texte répété nettoient désormais les tampons temporaires de façon plus défensive lors des chemins d'erreur et des opérations sur les grands textes
Version 2.132.18
Fixed
- L'affectation de valeur au constructeur de chaînes interne efface désormais le texte précédent lorsqu'une chaîne vide est affectée, empêchant les tampons XML et texte réutilisés de conserver un contenu périmé
Version 2.132.17
Fixed
- La création de feuille de graphique XLS accepte désormais les noms de feuille source entre guillemets contenant un point d'exclamation, rejette les références de ligne surdimensionnées avant qu'elles ne rebouclent en une ligne BIFF valide et plafonne les noms de légende de courbe de tendance à la limite de texte court BIFF, de sorte que les enregistrements de graphique générés restent bien formés
Version 2.132.16
Fixed
- Les listes internes à clés chaîne et à clés objet suppriment désormais les clés de recherche périmées lorsqu'un emplacement existant est écrasé, empêchant les anciennes clés de se résoudre vers des entrées de remplacement
- Les remplacements de listes d'objets internes et les caches de clés uniques transformées libèrent désormais les entrées possédées lors de l'écrasement, de l'effacement et de la destruction, empêchant les fuites lors des opérations répétées sur les classeurs et les styles
Version 2.132.15
Fixed
- Les lectures en flux XLSX directes décodent désormais les cellules booléennes qui stockent des valeurs littérales OOXML telles que true et false
- Les mises à jour d'index de liste de chaînes interne suppriment désormais les clés périmées lorsqu'un emplacement existant est écrasé, empêchant les anciens noms de se résoudre à la nouvelle valeur
Version 2.132.14
Fixed
- Les messages d'invite et d'erreur de validation de données BIFF8 dont le premier caractère est NUL préservent désormais les limites d'enregistrement au lieu d'écrire une longueur DV non concordante
Version 2.132.13
Fixed
- L'analyse de texte XML rejette désormais les débuts d'entité imbriqués tels que && au lieu de supprimer silencieusement l'entité inachevée
- Les formules décompilées écrivent désormais les constantes numériques avec un séparateur décimal à point invariant, de sorte que le texte de formule reste portable entre les paramètres régionaux
Version 2.132.12
Fixed
- La transparence PNG à palette ignore désormais les couleurs transparentes absentes de la palette de l'image au lieu de marquer un index de palette arbitraire comme transparent
- Les formules SUMPRODUCT arrêtent désormais de parcourir les lignes restantes après la première ligne hors plage utilisée dans les longs arguments de plage, évitant des lectures de cellules inutiles tout en préservant le résultat calculé
Version 2.132.11
Fixed
- Les formules TEXT renvoient désormais #VALUE! lorsqu'un format numérique invalide ou surdimensionné ne peut être appliqué, au lieu d'être avalées comme un résultat vide réussi
- La troncature de la table de chaînes partagées libère désormais les blocs de queue corrects et garde la table réutilisable après de grands cycles de suppression
Version 2.132.10
Fixed
- Les recherches exactes MATCH honorent désormais les caractères génériques d'Excel, et les métadonnées de décalage de ligne du XLS classique ignorent désormais les lignes hors bloc au lieu de corrompre la structure du classeur enregistré
- Les métadonnées de texte compressé PNG libèrent désormais les tampons temporaires en toute sécurité si le traitement de bloc lève une exception
Version 2.132.9
Fixed
- Les métadonnées de texte compressé PNG, l'insertion de liste de blocs et la gestion de l'ordre des octets CRC restent désormais stables entre les plateformes Windows prises en charge
Version 2.132.8
Fixed
- Les formules LEFT et RIGHT signalent désormais #VALUE! lorsque num_chars ne peut être converti en un entier valide
Version 2.132.7
Fixed
- Les formules SEARCH prennent désormais en charge les caractères génériques ?, * et ~ de style Excel
- La validation du nom de feuille de calcul rejette désormais les caractères de nom de feuille Excel invalides lors du renommage des feuilles
- La suppression de saut de page manuel fonctionne désormais après l'insertion d'un saut avant des sauts existants
Version 2.132.6
Fixed
- Les formules DATE correspondent désormais au comportement de report de mois et de jour compatible avec Excel, y compris les appels tels que DATE(2008,14,2)
- Les lectures Hidden des plages de colonnes signalent désormais la visibilité de chaque colonne au lieu d'y mélanger l'état de visibilité des lignes
- Les métadonnées de ligne BIFF à la limite de ligne Excel 97-2003 se chargent désormais correctement, de sorte que les paramètres de la ligne 65536 sont préservés
Version 2.132.5
Fixed
- Le chargement de classeur BIFF tolère désormais les couleurs d'onglet de feuille mal formées, les libellés de tableau croisé tronqués et les fragments de date de cache de tableau croisé invalides sans lever d'exception
- Le chargement de paquet et de flux de classeur nettoie désormais plus cohéremment les chemins d'échec d'archive et de configuration de stockage, évitant les fuites de ressources sur entrée mal formée ou échecs d'ouverture de stockage fondé sur flux
Version 2.132.4
Fixed
- La gestion d'archive ZIP finalise désormais le paquet courant avant de réutiliser le même objet d'archive pour un autre paquet, et l'ouverture d'archive fondée sur fichier permet désormais des lecteurs partagés concurrents
Version 2.132.3
Fixed
- L'écriture de paquet de classeur préserve désormais les noms d'entrée ZIP non ASCII avec des métadonnées UTF-8, empêchant le mojibake lorsque les noms de partie de paquet contiennent du texte Unicode
- La sortie XML écrit désormais le texte brut et les valeurs d'attribut en octets UTF-8 lorsque l'échappement est désactivé, en concordance avec l'encodage de document déclaré
- L'évaluation de formule efface désormais son état en cours après les exceptions de rappel et gère correctement l'annulation des grands nombres sur les versions Unicode de Delphi
- L'extraction de matrice de formule de tableau respecte désormais les bornes inférieures de tableau Variant non nulles au lieu de lever une exception pour des tableaux valides en base 1
Version 2.132.2
Changed
- Le tri de plage utilise désormais un passage d'ordonnancement stable O(n log n) pour les grandes plages triées, tout en préservant le comportement d'aller-retour existant du contenu des lignes
- L'analyse et la mise en forme numériques ODS et XLSX réutilisent désormais un état de mise en forme invariant au lieu de le créer répétitivement dans les chemins chauds
Fixed
- L'analyse XML accepte désormais les blocs CDATA valides et les instructions de traitement UTF-8 sans corrompre le texte ni échouer sur un balisage valide
- L'analyse de formule accepte désormais la notation scientifique signée et rejette proprement les octets de formule mal formés ou tronqués
- Les chemins d'ouverture et d'enregistrement de classeur classique libèrent désormais les flux et stockages de façon fiable après les erreurs, empêchant les fichiers temporaires de rester verrouillés
- La gestion de tampon binaire valide désormais les limites de copie et de lecture, fait croître les tampons de destination avant la copie, et rejette proprement les références arrières de compression VBA mal formées
Version 2.132.1
Fixed
- Correction du message d'erreur levé lorsqu'un classeur chiffré utilise un schéma de chiffrement non pris en charge : il affirmait précédemment que le chiffrement Agile ECMA-376 ne pouvait pas être lu, alors que le déchiffrement Agile (AES-128/192/256) est pris en charge depuis la 2.119.0. Le message liste désormais les schémas réellement pris en charge
- Open oriente désormais les appelants vers TXLSXWorkbook.OpenEncrypted lorsqu'il refuse un paquet OOXML chiffré, au lieu d'indiquer que les classeurs chiffrés ne sont pas pris en charge
Version 2.132.0
Changed
- Le chargement XLSX est sensiblement plus rapide : le lecteur XML internalise désormais les noms d'élément répétés et convertit les valeurs de texte et d'attribut directement depuis son tampon d'analyse, réduisant de plus de moitié les allocations mémoire par cellule. L'ouverture multithread (2.128.0) en bénéficie le plus — les allocations supprimées étaient celles qui sérialisaient les threads de travail — avec les classeurs multi-feuilles s'ouvrant désormais près de deux fois plus vite que le chemin monothread sur les machines multicœurs ; l'ouverture monothread gagne elle aussi quelques pourcents
Version 2.131.0
Added
- Les blocs d'extension de feuille de calcul que HotXLS ne modélise pas — entrées
<ext>dans un<extLst>de feuille de calcul autres que les graphiques sparklines, telles qu'écrites par Excel pour des fonctionnalités comme la mise en forme conditionnelle x14 ou les segments — sont désormais préservés tels quels lorsqu'un classeur est ouvert puis écrit à l'enregistrement, de sorte qu'ouvrir et réenregistrer un fichier ne supprime plus ces extensions. Les blocs capturés sont visibles en lecture seule viaWorksheet.RawWorksheetExtset voyagent avec la feuille lorsqu'elle est copiée vers un autre classeur
Version 2.130.0
Added
- Les classeurs enregistrés qui contiennent des formules portent désormais la partie de chaîne de calcul
xl/calcChain.xml, permettant à Excel d'amorcer son moteur de dépendances depuis l'ordre enregistré au lieu de le reconstruire au chargement. Après un appel àRecalculate, la chaîne suit l'ordre topologique du graphe des dépendances ; sinon les cellules de formule sont listées dans l'ordre du document (une indication valide qu'Excel raffine à la volée). La partie, son type de contenu et sa relation de classeur sont émis ensemble et survivent aux allers-retours ouverture/enregistrement
Version 2.129.0
Added
- La nouvelle propriété
Workbook.ParallelParseThreadsrègle le nombre de workers pour le chemin d'Open multithread introduit en 2.128.0 (0 = automatique, un worker par cœur de CPU). L'analyse de feuille de calcul alloue beaucoup et l'allocation mémoire est sérialisée entre threads, donc sur certaines charges un petit plafond explicite performe aussi bien — voire mieux — que le nombre complet de cœurs ; la propriété permet aux intégrateurs de choisir ce qui se mesure le mieux pour leurs fichiers
Version 2.128.0
Added
- Chargement XLSX multithread : l'ouverture d'un classeur analyse désormais le XML de chaque feuille de calcul — le coût dominant sur les gros fichiers — sur des threads de travail, de sorte que les classeurs multi-feuilles s'ouvrent plus vite sur les machines multicœurs. Les parties de feuille sont extraites du paquet à l'avance et chaque worker ne touche que sa propre feuille, donc le classeur chargé est identique au résultat sériel
- La nouvelle propriété
Workbook.ParallelParse(par défautTrue) repasse à l'analyse monothread lorsqu'elle est définie àFalseavantOpen— une désactivation en une ligne pour les environnements contraints
Changed
- Le rappel de lecture
OnProgressse déclenche toujours une fois par feuille de calcul sur le thread appelant, désormais au moment où chaque feuille est envoyée à l'analyse plutôt qu'strictement entre les feuilles
Version 2.127.0
Added
- Recalcul incrémental sur le moteur XLSX : la nouvelle méthode
Workbook.Recalculateconstruit un graphe de dépendances de formule, évalue chaque cellule de formule une fois dans l'ordre des dépendances, et stocke chaque résultat dans la valeur mise en cache de la cellule. Les appels suivants réévaluent uniquement les cellules affectées par les changements de valeur depuis le dernier passage — sur les modèles en chaîne (feuilles financières, cascades de rapports) la modification d'une entrée recalcule juste ses formules en aval au lieu de tout le classeur - Les fonctions volatiles (
NOW,TODAY,RAND,OFFSET,INDIRECT) se recalculent à chaque passe, comme les formules dont les références ne peuvent être résolues statiquement (noms multi-zones, classeurs externes) — le moteur sur-recalcule plutôt que de risquer un résultat périmé - Les cycles de référence sont détectés au lieu de boucler :
Recalculaterenvoie un code d'erreur lorsque les formules forment une chaîne circulaire, ignore les membres du cycle et évalue tout de même chaque formule hors du cycle. Les références entre feuilles, les plages nommées et les formules de tableau CSE (résultats débordés sur la plage ancrée) participent pleinement au graphe des dépendances
Changed
- Le chemin
Calculateà la demande existant est inchangé ;Recalculateest une API distincte à opt-in et les classeurs qui ne l'appellent jamais se comportent exactement comme avant
Version 2.126.0
Added
- Sparklines sur le moteur XLSX : les feuilles de calcul portent désormais des groupes de sparklines — les mini-graphiques dans la cellule qu'Excel rend à partir d'une plage de données — avec les trois types d'Excel (ligne, colonne, gagnant/perdant empilé). Créez-en un avec
Worksheet.AddSparklineGroupou construisez des groupes manuellement via la nouvelle collectionWorksheet.SparklineGroups, en ajoutant un nombre quelconque de sparklines par groupe avec une plage source et une cellule d'affichage chacun - Les groupes de sparklines exposent le jeu d'options complet qu'Excel offre : épaisseur de ligne, marqueurs de points de données, commutateurs d'accentuation des points haut/bas/négatif/premier/dernier, huit emplacements de couleur ARGB (série, négatif, axe, marqueurs, premier, dernier, haut, bas), mise à l'échelle d'axe vertical par groupe ou par sparkline, et gestion des écarts/zéros/étendue pour les cellules source vides
- Les sparklines survivent à un aller-retour complet enregistrer→ouvrir : l'enregistrement émet le bloc d'extension
extLstde la feuille de calcul ([MS-XLSX] §2.3.6) de sorte qu'Excel 2010 et ultérieurs rendent les sparklines, et l'ouverture d'un tel classeur — qu'il ait été écrit par HotXLS ou Excel — reconstruit chaque groupe, option et plage afin qu'ils persistent à travers les cycles d'édition. La copie d'une feuille vers un autre classeur clone aussi ses groupes de sparklines
Version 2.125.0
Added
- Sept fonctions de texte à comptage d'octets DBCS s'évaluent désormais sur les deux moteurs :
LEFTB,RIGHTB,MIDB,LENB,FINDB,SEARCHBetREPLACEB. Chacune traite son entrée comme une chaîne d'octets selon la page de codes ANSI système, de sorte que les caractères CJK (chinois/japonais/coréen) occupent 2 octets tandis que l'ASCII en occupe 1 ; les opérations qui scindraient une paire d'octets DBCS lead/trail se rabattent sur la limite de caractère la plus proche, en concordance avec le comportement d'Excel
Version 2.124.0
Added
- Cinq fonctions de test d'hypothèse et de distribution s'évaluent désormais sur les deux moteurs :
Z.TEST(probabilité unilatérale de queue droite que la moyenne de l'échantillon soit au moinsxsous l'hypothèse nulle),T.TEST(p-value du test t apparié sur deux échantillons ; les types non appariés à variance égale/inégale sont reportés),CHISQ.TEST(p-value d'adéquation via la CDF du Khi-deux de queue supérieure),HYPGEOM.DIST(PMF/CDF hypergéométrique avec le drapeau cumulatif) etNEGBINOM.DIST(PMF/CDF binomiale négative). Les calculs de p-value réutilisent les assistants CDF normale/Student/Khi-deux existants du moteur via des routines imbriquées autonomes, donc aucune méthode Calc existante ne change
Version 2.123.0
Added
- Quatorze fonctions de formule issues d'une revue des manques de compatibilité s'évaluent désormais sur les deux moteurs :
AVERAGEIF(moyenne à critère unique, la sœur de SUMIF/COUNTIF qui manquait au moteur),WORKDAY.INTLetNETWORKDAYS.INTL(masques de week-end personnalisés via les codes 1à 17 ou une chaîne de 7 caractères lun-dim),XIRRetXNPV(taux de rentabilité interne et valeur actuelle nette pour des flux de trésorerie à dates irrégulières, résolus par bissection d'encadrement),CEILING.PRECISE/FLOOR.PRECISE/ISO.CEILING(arrondi indépendant du signe),PERCENTRANK.INC/PERCENTRANK.EXC(rang de centile avec l'interpolation inclusive/exclusive correspondante),MODE.MULT(déborde chaque valeur à égalité pour la fréquence la plus élevée),ERF.PRECISE(fonction d'erreur de Gauss via sa série alternée),ACCRINT(intérêts courus) etISPMT(intérêt de période pour l'amortissement à capital constant)
Version 2.122.0
Added
- Les commentaires filaires (Excel 365) réalisent désormais l'aller-retour sur le moteur XLSX :
AddThreadedCommentetAddThreadedReplysur une feuille de calcul construisent un arbre de réponses parent→enfant ancré à une cellule, enregistrent automatiquement chaque auteur dans une nouvelle listePersonsau niveau du classeur, et émettent la partie dédiéexl/threadedComments/threadedCommentN.xmlpar feuille plus lexl/person/person.xmlau niveau du classeur ; la réouverture d'un tel paquet reconstruit l'arbre de conversation et la liste des participants depuis ces parties, de sorte que les chaînes de réponses, les identificateurs et les noms affichés survivent à un cycle complet lecture→écriture
Version 2.121.0
Added
- L'évaluateur de formules calcule désormais les fonctions de tableau dynamique d'Excel 365
XMATCH,SORT,UNIQUEetSEQUENCE, rejoignant lesXLOOKUPetFILTERdéjà prises en charge ; les résultats débordent en tableaux 2D de sorte queSEQUENCE(3;2;1;1)renvoie une grille 3×2,SORTréordonne les lignes par n'importe quelle colonne clé en ordre ascendant ou descendant,UNIQUEréduit les lignes en double en conservant la première occurrence, etXMATCHindique la position en base 1 d'une valeur recherchée avec les mêmes modes de correspondance exacte/caractères génériques/inférieur suivant/supérieur suivant queXLOOKUP
Version 2.120.0
Added
- La nouvelle méthode
PasteFromClipboardsur les feuilles de calcul des deux moteurs lit le texte séparé par tabulations du presse-papiers Windows — la charge utile qu'Excel y place lorsqu'une plage est copiée, ou une simple sélection depuis toute autre application — et l'écrit dans les cellules à partir de la ligne et colonne données, avec la même promotion de type nombre/date/booléen que le chargeur CSV utilise déjà ; le texte commençant par=devient une formule active, comme le fait Excel lui-même lors du collage
Version 2.119.0
Added
- Lecture du chiffrement Agile ECMA-376 — la protection par mot de passe qu'Excel 2010 et ultérieurs appliquent par défaut :
OpenEncryptedanalyse désormais le descripteur XML de chiffrement, dérive les clés par hachage SHA-512 à compteur de rotation, vérifie le mot de passe et déchiffre le paquet segmenté AES-CBC (AES-128/192/256), de sorte que les classeurs protégés par mot de passe directement dans Excel s'ouvrent sans qu'Excel soit installé OpenEncryptedgère les trois cas via un seul point d'entrée :.xlsxordinaire non chiffré, chiffrement standard (notre aller-retourSaveAsEncrypted) et chiffrement Agile ; un mot de passe erroné lève la même erreur claire dans tous les schémas
Fixed
- L'enregistrement d'un classeur
.xlsxdont le XML de feuille dépassait environ 116 Ko — environ 3000 lignes de données textuelles typiques — plantait avec un débordement de pile ; la somme de contrôle CRC-32 du writer ZIP traite désormais les données par tranches de 64 Ko, ce qui écarte le backend de compression de son chemin de code à grande entrée qui alloue un tampon de travail surdimensionné sur la pile. Le résultat de la somme de contrôle est inchangé
Changed
- La déduplication des chaînes partagées passe désormais par une table de hachage au lieu de parcourir la liste des chaînes, et la partie
sharedStrings.xmlest assemblée via le constructeur de chaîne pré-agrandi au lieu de concaténations répétées — avec l'index de cellule à temps constant, cela ramène l'enregistrement de 120 000 cellules de chaîne de dizaines de secondes à environ un tiers de seconde
Version 2.117.0
Changed
- L'accès aux cellules XLSX est désormais à temps constant : la collection de cellules de la feuille de calcul porte un index de hachage sur (ligne, colonne), remplaçant le parcours linéaire précédent — de sorte que le remplissage, la relecture ou le chargement d'une grande feuille évolue linéairement avec le nombre de cellules au lieu de quadratiquement ; le remplissage de 100 000 cellules prend désormais bien moins d'une seconde là où il prenait auparavant des minutes
- L'accélération s'applique à tout le moteur :
Cells[r, c],HasCell, le chargement et l'enregistrement du classeur, les copies inter-classeurs, l'ajustement automatique et tous les assistants touchant les cellules par position en bénéficient ; l'insertion ou la suppression de lignes et de colonnes reconstruit l'index en un seul passage
Version 2.116.0
Added
- Export PDF dans le moteur XLS classique : les nouvelles méthodes
SaveAsPDFsur la feuille de calcul et le classeur rendent la plage utilisée (ou une plage fournie par l'appelant viaTXLSPDFExport) sous forme de grille paginée — texte d'affichage des cellules selon le format numérique, lignes de grille, largeurs de colonne dérivées des largeurs Excel et mises à l'échelle pour tenir sur la page, et pagination multi-page automatique - La sortie est un fichier PDF 1.4 autonome sans dépendance externe, utilisant la police Helvetica intégrée avec l'encodage de texte WinAnsi ; l'orientation A4 portrait ou paysage, la marge de page et la taille de police sont configurables sur l'exportateur
- Il s'agit d'un export de présentation de données au même titre que HTML et RTF : il reproduit le contenu et la mise en page tabulaires pour les rapports et la transmission de documents plutôt qu'une mise en style complète par cellule
Version 2.115.0
Added
- Création de graphique en un seul appel depuis une plage de données dans le moteur XLSX : le nouveau
AddChartFromRangeconstruit un graphique complet et dérive ses séries automatiquement à partir d'un bloc de données rectangulaire — l'équivalent du « insérer un graphique depuis la sélection » d'Excel — avec une disposition séries-en-colonnes ou séries-en-lignes transposée - Les raccourcis nommés
AddColumnChart,AddBarChart,AddLineChart,AddPieChartetAddAreaChartchoisissent un type de graphique par nom via le même flux en un appel, en lisant les noms de série depuis la ligne d'en-tête et les libellés de catégorie depuis la première colonne - Les références de série sont qualifiées avec le nom entre guillemets de la feuille source, de sorte qu'un graphique généré continue de fonctionner lorsqu'il est placé sur n'importe quelle feuille et survit à l'enregistrement et au rechargement
Version 2.114.0
Added
- Import RTF dans le moteur XLS classique, l'inverse de l'export
SaveAsRTFexistant : les nouvelles méthodesOpenRTFsur la feuille de calcul et le classeur lisent la table d'un document RTF dans des cellules de feuille de calcul —\cellavance la colonne,\rowavance la ligne — en partant de A1 - Il récupère les données tabulaires des fichiers produits par
SaveAsRTF, Word ou WordPad : le texte numérique est stocké sous forme de nombres afin que les formules continuent de fonctionner, les échappements hexadécimaux (\'hh) et Unicode (\uN) se décodent correctement, et les groupes d'en-tête (table de polices, table de couleurs, feuille de style, info) sont ignorés - Les documents sans table retombent en mode paragraphe, important chaque
\parcomme la ligne suivante dans la colonne A
Version 2.113.0
Added
- Lecture des classeurs
.xlsxchiffrés :OpenEncrypteddéchiffre désormais les paquets à chiffrement standard ECMA-376 (AES-128), complétant l'aller-retour avec leSaveAsEncryptedexistant — il lit le conteneur de fichier composé, dérive la clé depuis le mot de passe, la vérifie et charge le classeur récupéré - Un mot de passe erroné lève une erreur claire « le mot de passe est incorrect », et
OpenEncryptedsur un.xlsxordinaire non chiffré continue de le charger directement, de sorte que les appelants peuvent router chaque fichier via un seul point d'entrée
Changed
- Le message de chiffrement non pris en charge nomme désormais explicitement le chiffrement Agile ECMA-376 comme le schéma non pris en charge restant, puisque la lecture et l'écriture du chiffrement standard sont toutes deux disponibles
Version 2.112.0
Added
- La nouvelle propriété
TaggedTextsur les cellules XLSX convertit entre texte riche et balisage léger :<b>,<i>,<u>,<s>,<sub>,<sup>,<color=#RRGGBB>,<font=Name>et<size=N>, avec les échappements</>/&— de sorte qu'un contenu de cellule multi-format puisse être produit depuis une chaîne de modèle au lieu d'assembler les objets d'exécution à la main - L'écriture du balisage construit la liste d'exécutions et garde
Valuecomme texte concaténé brut ; un balisage sans balises stocke une chaîne brute sans charge utile riche ; la lecture sérialise les attributs de chaque exécution comme des jeux complets de balises ; les balises inconnues passent telles quelles en texte littéral
Fixed
- Une exécution de texte riche composée entièrement d'espaces (par exemple une seule espace stylée entre des mots) survit désormais à l'enregistrement et au rechargement ; auparavant l'espace était supprimée à la réouverture du fichier
Version 2.111.0
Added
- Le nouvel événement
OnProgresssur le classeur XLSX signale la progression du chargement et de l'enregistrement : il se déclenche une fois par feuille de calcul lorsqu'elle est analysée pendantOpenou émise pendantSaveAs, portant la phase (lecture ou écriture), le numéro de feuille courant en base 1 et le total — de sorte que les applications puissent piloter une barre de progression sur de longues opérations multi-feuilles à un coût de rappel négligeable
Version 2.110.0
Added
- Le nouveau curseur de lignes style jeu de données
TXLSRowCursorpour les fichiers.xlsx/.xlsm:Open,SelectSheet, puisFindFirst/FindNextparcourent une feuille de calcul une ligne à la fois avec seules les cellules de la ligne courante en mémoire — une alternative à tirage au rappels deTXLSDirectReaderpour traiter séquentiellement des feuilles de plusieurs millions de lignes - Chaque ligne expose son numéro de ligne de feuille de calcul en base 1, les cellules peuplées dans l'ordre du document (valeur typée, texte de formule, index de style) et une recherche
ValueByColqui renvoieNullpour les colonnes non peuplées sur cette ligne ; les lignes sans cellule peuplée sont ignorées - Les noms et le nombre de feuilles sont disponibles après
Open(surcharges fichier et flux), avec les chaînes partagées et la détection de format de date gérées de la même manière que par le lecteur en flux
Version 2.109.0
Added
- Le nouveau pinceau de format
TXLSXCellFormatpour le moteur XLSX : décrivez police, remplissage, bordure, alignement, format numérique et protection une fois, puis tamponnez un nombre quelconque de cibles avecApply(cellule unique),ApplyRange,ApplyRows,ApplyColsouApplySheet - Seuls les aspects réellement touchés sont appliqués — un pinceau qui ne définit que
Font.Boldlaisse intacts les remplissages, bordures et formats numériques des cibles — de sorte que les pinceaux se composent avec la mise en forme existante comme le reproduit-format d'Excel - Chaque application résout les aspects touchés une fois dans les pools de style du classeur puis n'écrit que les index de pool par cellule, de sorte que la mise en forme de grandes plages coûte une recherche de pool par aspect plutôt que par cellule ;
ApplyRangematérialise les cellules manquantes tandis que les formes ligne/colonne/feuille ne tamponnent que les cellules existantes
Version 2.108.0
Added
- Texte d'affichage booléen localisable : les nouvelles variables
XLSBooleanTrueText/XLSBooleanFalseTextcontrôlent la façon dont les valeurs de cellule booléennes sont rendues partout où du texte d'affichage est produit —FormattedText, export HTML et mesure d'ajustement automatique — de sorte que les applications localisées puissent afficher par exemple WAHR/FALSCH ou VRAI/FAUX
Changed
- Les cellules booléennes s'affichent désormais par défaut comme
TRUE/FALSE, en concordance avec la grille d'Excel, au lieu de la capitalisationTrue/Falsede l'exécution
Version 2.107.0
Added
- Le nouvel événement
OnPasswordsur le classeur XLS classique : lorsqueOpenrencontre un classeur chiffré et que le mot de passe fourni est manquant ou erroné, l'événement demande un mot de passe à l'application et réessaie l'ouverture (jusqu'à trois tentatives) — de sorte que les outils interactifs puissent interroger l'utilisateur au lieu de précharger des mots de passe ou d'examiner des codes d'erreur - L'événement reçoit le mot de passe courant par référence et un drapeau
Retry; laisserRetryàFalseabandonne et renvoie l'erreur de mot de passe d'origine
Version 2.106.0
Added
- La nouvelle classe
TXLSFileMonitorsurveille un fichier de classeur sur disque et déclencheOnFileChangedlorsqu'un autre processus — typiquement Excel — l'enregistre par-dessus, de sorte que les applications puissent recharger et rafraîchir leur vue automatiquement - Fondé sur le sondage (heure de dernière écriture plus taille,
IntervalMsconfigurable, 1 s par défaut), de sorte qu'il fonctionne aussi bien sur disques locaux que sur partages réseau sans boucle de messages ;SynchronizeEventchoisit entre une distribution sur le thread principal pour les gestionnaires d'IHM (par défaut) et une distribution directe sur le thread surveilleur pour le code console ou service - Un fichier qui disparaît brièvement pendant un cycle d'enregistrement ne déclenche pas de faux événement ; le changement est signalé une fois le nouveau contenu en place
Version 2.105.0
Added
- Ajustement automatique borné dans le moteur XLS classique, en concordance avec les limites que le moteur XLSX offre déjà : les nouvelles surcharges
AutoFit(Columns, AMin, AMax),ColumnsAutoFit(AMinWidth, AMaxWidth)etRowsAutoFit(AMinHeight, AMaxHeight)bornent chaque largeur de colonne ajustée (unités de largeur Excel) ou hauteur de ligne (points) à la plage donnée — 0 laisse un côté non borné, et une colonne ou ligne entièrement vide reçoit quand même le minimum demandé
Version 2.104.0
Added
- La nouvelle propriété en lecture seule
FormattedTextrenvoie le texte d'affichage d'une cellule — la valeur stockée rendue via son format numérique, telle qu'Excel l'affiche dans la grille — couvrant les séparateurs de milliers, les décimales, les pourcentages, les masques de date et d'heure, les masques multi-sections positif/négatif/zéro et les formats booléens - Disponible dans les deux moteurs : sur
IXLSRangedans le moteur XLS classique (les plages multi-cellules rendent leur cellule d'ancrage) et surTXLSXCelldans le moteur XLSX (les cellules de texte riche renvoient leur texte d'exécution concaténé)
Version 2.103.0
Added
- La nouvelle fonction
DetectExcelContentFormat(surcharges fichier et flux) identifie le conteneur d'un classeur depuis ses octets de tête plutôt que depuis l'extension de fichier — signalant un fichier composé BIFF/OLE, un paquet OOXML.xlsx, un paquet OpenDocument.odsou du texte délimité brut — de sorte que les applications puissent router les fichiers renommés ou sans extension vers le bon chargeur
Changed
TXLSWorkbook.Openrenifle désormais la signature de contenu et rejette les paquets fondés sur ZIP (un.xlsxou.odsrenommé en.xls) avec un message clair nommant le bon chargeur, au lieu d'échouer avec un code d'erreur opaqueTXLSXWorkbook.Openreconnaît désormais le contenu de fichier composé OLE (un.xlshérité renommé en.xlsx, ou un paquet chiffré) et signale ce que le fichier est réellement, au lieu de faire remonter une erreur d'analyseur ZIP
Version 2.102.0
Added
- La copie de feuille de calcul inter-classeurs dans le moteur XLS classique (BIFF8) apporte désormais au destination les noms définis au niveau du classeur qu'une formule utilise — la même chose qu'Excel fait lorsqu'une feuille passe d'un classeur à l'autre : un nom que le destination possède déjà est lié tel quel (aucun doublon n'est créé), un nom manquant est enregistré avec sa définition et sa visibilité d'origine afin que la formule se recompile contre lui, et un nom dont la définition ne peut se résoudre dans le destination (par exemple, il pointe vers une feuille qui n'existe pas là) laisse la formule sur sa valeur calculée comme avant
Version 2.101.0
Added
- La copie de feuille de calcul inter-classeurs dans le moteur XLS classique (BIFF8) repointe désormais les formules vers le classeur source sous forme de lien externe lorsque le destination n'a aucune feuille du nom référencé et que la source a été enregistrée dans un fichier : la cellule copiée reste une formule active (ses références basculent vers la forme [SourceBook]Sheet), la valeur calculée de la source est conservée comme résultat mis en cache de sorte que les lectures continuent de fonctionner jusqu'au rafraîchissement du lien, et la référence au classeur externe réalise l'aller-retour via enregistrement et rechargement ; les formules portant des références de noms définis, et les copies depuis des classeurs sources non enregistrés, conservent la valeur calculée comme avant
Version 2.100.0
Added
- Les formules de tableau survivent désormais aux copies de feuille de calcul dans le moteur XLS classique (BIFF8) : chaque plage de tableau est reconstruite entièrement dans la copie — au sein du même classeur comme entre classeurs — avec la formule racine recompilée selon les noms de feuille du destination ; un tableau que le destination ne peut pas recompiler conserve ses valeurs calculées
Fixed
- La copie d'une plage contenant des cellules de formule de tableau entre feuilles de calcul XLS classiques ne risque plus un plantage sur les cellules de débordement (qui ne portent pas leur propre arbre de formule) ; ces cellules transfèrent désormais leur valeur calculée
Version 2.99.0
Added
- Les feuilles de graphique peuvent désormais être copiées entre classeurs XLS classiques (BIFF8) : le flux d'enregistrements de graphique est cloné dans le destination, les références de catégorie / valeur / nom des séries sont recompilées selon les noms de feuille du destination (une série dont la feuille n'a pas d'homonyme retombe sur une référence vide afin que le fichier s'ouvre quand même), les références de police du graphique migrent par valeur dans la table de polices du destination, et la mise en page, la couleur d'onglet, le zoom et la visibilité de la feuille de graphique suivent ; cela supprime la dernière limitation documentée de la copie de feuille de calcul inter-classeurs
Version 2.98.0
Added
- La copie de feuille de calcul inter-classeurs dans le moteur XLS classique (BIFF8) préserve désormais la mise en forme de texte riche à l'intérieur des cellules : la police de chaque exécution de mise en forme migre par valeur dans la table de polices du classeur destination et l'exécution est réécrite pour pointer vers elle, de sorte que les chaînes à polices mixtes conservent leur apparence au lieu de retomber sur du texte brut ; les données auxiliaires phonétiques (extrême-orient) voyagent aussi avec la chaîne
Fixed
- Les polices référencées uniquement par des exécutions de texte riche (et par aucun format de cellule) ne sont plus supprimées de la table FONT lors de l'enregistrement d'un classeur XLS classique, et les exécutions suivent désormais le même réordonnancement de polices que les formats de cellule à l'enregistrement, de sorte que les chaînes de texte riche conservent les bonnes polices après un cycle enregistrement/rechargement
Version 2.97.0
Added
- La copie de feuille de calcul inter-classeurs dans le moteur XLS classique (BIFF8) clone désormais aussi les images intégrées : les octets d'image migrent dans le magasin d'images du classeur destination (les images identiques sont partagées plutôt que dupliquées), et chaque cadre d'image conserve son ancre de cellule, sa taille, sa visibilité et sa couleur transparente ; un nouveau projet d'exemple CrossWorkbookCopyXls démontre la copie du moteur classique de bout en bout
Changed
- Les limitations de copie inter-classeurs du XLS classique sont désormais documentées : les feuilles de graphique ne sont pas copiées (AddCopy renvoie nil pour elles), et une formule dont la référence de feuille n'a pas de feuille homonyme dans le destination conserve la valeur calculée de la source au lieu de devenir une référence externe
Version 2.96.0
Added
- La copie de feuille de calcul inter-classeurs dans le moteur XLS classique (BIFF8) clone désormais aussi les formats conditionnels (règles cellule-est et d'expression, barres de données, échelles de couleurs, jeux d'icônes et leurs styles différentiels), les validations de données (règles de liste, numérique, date, longueur de texte et personnalisée avec boîtes d'invite et d'erreur), la définition AutoFilter avec ses critères par colonne (les boutons de liste déroulante sont reconstruits dans la copie) et les tableaux (les identificateurs et noms sont réémis afin de rester uniques dans le classeur destination) ; les formules de règle sont recompilées selon les noms de feuille du destination, en concordance avec le comportement des formules de cellule
Version 2.95.0
Added
- Les feuilles de calcul XLS classiques (BIFF8) peuvent désormais être copiées d'un classeur vers un autre : TXLSWorksheets.AddCopy ajoute une nouvelle feuille au classeur destination et copie les valeurs de cellule, les formules (réencodées en texte afin que le destination les recompile selon ses propres noms de feuille, gardant actives les références 3D homonymes), les cellules fusionnées, les commentaires, les liens hypertexte, les hauteurs de ligne, les largeurs de colonne, les niveaux de plan, les volets figés, la protection de feuille, la mise en page, les sauts de page manuels, la couleur d'onglet et les paramètres d'affichage de la feuille source ; les formats de cellule, ligne et colonne migrent par valeur dans la table de formats du classeur destination, de sorte qu'une source stylée produit une copie indépendamment stylée
- La migration de format inter-classeurs dans le moteur XLS classique transporte désormais les couleurs RGB et de thème en pleine précision le long de chaque entrée de format, de sorte que les remplissages, polices et bordures conservent leurs couleurs exactes au lieu de retomber sur des approximations de palette ; cela s'applique aussi au collage de plages entre classeurs
Version 2.94.0
Added
- La copie de feuille de calcul inter-classeurs clone désormais les formats conditionnels (avec leurs styles différentiels et les charges utiles visuelles dataBar / colorScale / iconSet), les tableaux, les validations de données et les graphiques (avec toutes leurs séries) ; chaque sous-objet copie en profondeur son propre état dans la feuille de calcul destination
- Les références de formule inter-classeurs sont réécrites : une référence dont le nom de feuille existe dans le destination se résout telle quelle, sinon elle devient une référence externe vers le classeur source (qui est enregistré comme lien externe) ou #REF! lorsque la source n'a pas d'identité de fichier ; la réécriture s'applique pareillement aux formules de cellule, aux règles de format conditionnel, aux formules de validation de données et aux plages de séries de graphique
Version 2.93.0
Added
- Une feuille de calcul peut désormais être copiée d'un classeur vers un autre : TXLSXSheets.AddCopy ajoute une nouvelle feuille au classeur destination et y copie les cellules, formules, plages fusionnées, dimensionnements de colonne/ligne, drapeaux masqué/replié/plan, volets figés, état d'affichage, protection, mise en page, plage AutoFilter et couleur d'onglet de la source ; les six index de style par cellule sont remappés dans les propres pools Font/Fill/Border/NumberFormat/Alignment/Protection du classeur destination via une recherche par égalité de valeur, de sorte qu'une source stylée produit une copie indépendamment stylée plutôt que des index pointant vers le mauvais pool
- Les six pools de style par attribut (Fonts, Fills, Borders, NumberFormats, Alignments, Protections) exposent chacun un LookupOrAdd en base 1 qui déduplique par valeur ; un nouveau projet d'exemple CrossWorkbookCopy démontre la copie inter-classeurs avec préservation du style
Version 2.92.0
Added
- Les classeurs XLSX prennent désormais en charge les tableaux croisés dynamiques : TXLSXWorksheet.AddPivotTable parcourt une plage source plate, construit automatiquement un cache de tableau croisé et renvoie un tableau croisé typé pour le câblage des axes ligne / colonne / page / données, reflétant l'API de longue date du moteur BIFF8 (XLS) afin que le même code cible l'un ou l'autre format ; PivotSetDataFieldFormat affecte un format numérique à chaque champ de valeur agrégé
- Les tableaux croisés créés par Excel réalisent l'aller-retour sans perte via Open puis Save : le moteur XLSX préserve chaque définition de cache de tableau croisé, les enregistrements de cache et la partie de tableau croisé tels quels et rejoue les octets originaux à l'enregistrement, de sorte que le réenregistrement d'un classeur ne supprime ni n'altère jamais ses tableaux croisés même lorsqu'ils utilisent des fonctionnalités que le modèle typé n'expose pas
Version 2.91.0
Added
- Un AutoFilter de feuille de calcul peut désormais être appliqué aux données de sorte que le classeur enregistré s'ouvre avec les lignes non correspondantes déjà masquées, reflétant ce que fait Excel lorsqu'une valeur est choisie depuis la liste déroulante de filtre
- Les images intégrées exposent leur géométrie en unités réelles (centimètres, pouces, points) à côté des valeurs EMU, et peuvent être redimensionnées par un facteur d'échelle avec verrouillage optionnel du ratio d'aspect
- Les marges de mise en page peuvent être définies directement en centimètres, en tant que commodité métrique par-dessus les marges fondées sur les pouces
- Les feuilles de calcul XLSX protégées exposent désormais quinze commutateurs d'autorisation fine-grained (formater les cellules, insérer/supprimer des lignes et colonnes, trier, AutoFilter, sélectionner les cellules verrouillées/déverrouillées, et plus) via une nouvelle propriété AllowOption, en concordance avec la liste de cases à cocher Révision > Protéger la feuille d'Excel ; les paramètres par action réalisent l'aller-retour via le fichier
- Les feuilles de calcul XLSX peuvent désormais être dupliquées (TXLSXSheets.Duplicate) : une nouvelle feuille est ajoutée et les cellules, plages fusionnées, dimensionnements de colonne/ligne, volets figés, état d'affichage, protection, mise en page et couleur d'onglet de la source y sont copiés, reflétant le clic droit > Déplacer ou copier > Créer une copie d'Excel
- Vingt-deux nouveaux projets d'exemple couvrent les capacités prises en charge par la bibliothèque : chiffrement de classeur, commentaires de cellule, liens hypertexte, noms définis, évaluation AutoFilter, images intégrées, un modèle de facture, mise en forme conditionnelle XLSX avancée, cellules fusionnées, plan de lignes/colonnes, volets figés, mise en page multi-feuilles, formules de tableau, copie/déplacement de plage, rechercher/remplacer, systèmes de dates, texte riche, CSV avancé, options d'export HTML, formats numériques personnalisés, lignes/colonnes masquées et protection de feuille de calcul
Version 2.90.29
Changed
- Le lecteur direct en flux compte désormais chaque cellule peuplée même lorsqu'aucun gestionnaire par cellule n'est attaché, de sorte qu'un simple appel ReadFile puisse être utilisé pour dimensionner rapidement une feuille de calcul ; le compte renvoyé et la propriété CellCount indiquent le nombre de cellules peuplées parcourues
Version 2.90.28
Added
- Les formules peuvent désormais être évaluées pas à pas, l'équivalent de la commande Évaluer la formule d'Excel : un nouveau traceur réduit une expression une sous-étape à la fois, en commençant par la plus profonde, et signale chaque réduction avec sa sous-expression source, la même sous-expression après substitution de ses opérandes par leurs valeurs, et la valeur résultante, de sorte que les applications puissent montrer comment un résultat se construit ; il respecte la précédence des opérateurs, garde intactes les références de plage pour des fonctions telles que SUM, et réutilise le moteur de calcul de la feuille de calcul afin que chaque étape concorde avec un recalcul complet
Version 2.90.27
Added
- Les classeurs XLSX peuvent désormais être produits cellule par cellule via un nouveau writer direct en flux qui émet chaque feuille de calcul directement dans le paquet à mesure que les lignes arrivent, sans construire une arborescence complète de cellules en mémoire, de sorte que de très gros fichiers puissent être générés avec une empreinte mémoire quasi constante ; le writer gère les chaînes en ligne, les nombres, les booléens, les dates et les formules sur plusieurs feuilles et réalise l'aller-retour avec le lecteur direct en flux
Version 2.90.26
Added
- Les classeurs XLSX peuvent désormais être parcourus cellule par cellule via un nouveau lecteur direct en flux qui lève des événements par cellule et par feuille sans construire une arborescence complète de cellules en mémoire, gardant l'empreinte mémoire quasi constante pour les très gros fichiers ; chaque cellule signalée porte sa valeur, son genre (nombre, chaîne, booléen, date ou erreur), son texte de formule et son index de style, avec détection de date optionnelle et prise en charge de l'abandon anticipé
Version 2.90.25
Added
- Les feuilles de calcul XLS classiques peuvent désormais ajouter des liens hypertexte depuis des références de cellule style A1 tout en préservant la normalisation d'URL, les sous-adresses ciblant le classeur, le texte affiché et les info-bulles
Version 2.90.24
Added
- Les sauts de page XLS classiques peuvent désormais être ajoutés depuis des positions de ligne ou colonne en base 1 et des références de cellule style A1 via la collection de sauts de page et des surcharges d'assistants de feuille de calcul
Version 2.90.23
Added
- Les feuilles de calcul XLS classiques et les collections de formes peuvent désormais créer des objets de dessin rectangle, ovale, ligne et formes automatiques typées depuis des chaînes de plage style A1
Version 2.90.22
Added
- Les collections de formes XLS classiques peuvent désormais créer des zones de texte depuis des chaînes de plage style A1 via une surcharge AddTextBox
Version 2.90.21
Added
- Les zones de texte XLS classiques peuvent désormais être repositionnées depuis des chaînes de plage style A1 via une nouvelle surcharge SetArea
Version 2.90.20
Added
- Les zones de texte de feuille de calcul XLS classique peuvent désormais être créées depuis des chaînes de plage style A1 via une surcharge AddTextBox
Version 2.90.19
Added
- Les feuilles de calcul XLS classiques peuvent désormais créer des zones de texte de dessin directement depuis des ancres de ligne et colonne via une nouvelle méthode AddTextBox
Version 2.90.18
Added
- Les feuilles de calcul XLS classiques peuvent désormais créer des commentaires de cellule directement depuis des coordonnées de ligne et colonne via de nouvelles surcharges AddComment