Composant TXLSWorkbookViewer
TXLSWorkbookViewer est un contrôle VCL qui affiche les feuilles de calcul des deux moteurs de classeur sans Microsoft Excel ni automatisation COM
Sources du classeur
- Assignez
Workbookpour afficher unTXLSWorkbookexistant - Assignez
XlsxWorkbookpour afficher unTXLSXWorkbookexistant - Appelez
LoadFromFilepour laisser le visualiseur posséder et charger un classeur XLS, XLSX, XLSM, XLTX, XLTM ou ODS - Appelez
ClearWorkbookavant de libérer un classeur externe encore attaché
Navigation
Le contrôle fournit des barres de défilement horizontales et verticales, le défilement par molette de la souris, le déplacement par glisser de la souris, l'extension de plage par Shift, les touches fléchées, Home, Page Up, Page Down et la navigation par Tab
GoToCell sélectionne une ligne et une colonne, SelectRange sélectionne un rectangle, NextWorksheet et PreviousWorksheet changent de feuille, et SelectedRange expose la référence A1 normalisée
Édition et calcul
Définissez Editable à True pour autoriser les éditions par F2, double-clic, touches imprimables, Delete et barre de formule ; les cellules verrouillées d'une feuille protégée restent en lecture seule
BeginEdit, CommitEdit et CancelEdit contrôlent l'éditeur en place, tandis que EditSelectedCell et FormulaBarText prennent en charge une barre de formule externe
Les éditions validées reconnaissent les formules, booléens, entiers, nombres à virgule flottante, textes et entrées vides, puis recalculent les formules dépendantes et invalident les caches de mise en forme conditionnelle et de pagination
Undo et Redo utilisent un historique circulaire borné en O(1) ; définissez UndoLimit pour contrôler la capacité, ou à zéro pour désactiver l'historique
Delete ou ClearSelectedRange efface la sélection comme une seule transaction ; Ctrl+C et CopySelectedRange copient du texte Unicode séparé par des tabulations, tandis que Ctrl+V, PasteSelectedRange et PasteText collent un bloc de texte rectangulaire au coin supérieur gauche de la sélection avec une seule entrée d'annulation
Le préflight de protection et de structure rejette une plage entièrement bloquée avant mutation ; l'annulation et le rétablissement préservent le texte enrichi natif, les caches de formules, les styles et les cellules absentes dans les deux modèles, avec le même contrôle de protection à chaque tentative d'historique
Les formules matricielles existantes, les régions de tables de données et les collages multi-cellules intersectant une fusion sont rejetés ; les éditions d'ancres fusionnées uniques et les effacements de fusions entières préservent la géométrie de fusion, tandis que les effacements partiels de plages fusionnées sont rejetés
Le moteur partagé TXLSWorkbookEditHistory peut aussi être instancié sans contrôle ; voir les transactions d'édition headless pour les règles de coordonnées, de cycle de vie, de calcul et de limites d'opérations
Sélection de référence de formule
Appelez BeginReferencePick pendant qu'un éditeur de formule hôte collecte une référence de feuille de calcul ; chaque changement de sélection déclenche OnReferencePick avec la plage A1 courante jusqu'à l'appel de EndReferencePick
Rendu
Le visualiseur utilise les largeurs de colonnes, hauteurs de lignes et texte d'affichage formaté de chaque feuille de calcul, restitue les remplissages pleins classiques et le style de police, et fournit des en-têtes, des quadrillages et des couleurs de sélection configurables
Pour les feuilles de calcul XLSX, le visualiseur restitue également les remplissages conditionnels, les couleurs et emphases de police, les formats numériques, les échelles de couleurs, 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ées
Le visualiseur met en cache un évaluateur de mise en forme conditionnelle préparé pour la feuille active, si bien que le défilement et les repeints de sélection ne rescannent pas le classeur ; appelez RefreshConditionalFormats après avoir modifié valeurs, formules, plages ou règles conditionnelles dans un classeur attaché
Le rendu XLSX inspecte les cellules creuses et les superpositions de styles par intervalle sans indexer les coordonnées vides, si bien que le défilement ne matérialise pas les cellules vides visibles ni n'agrandit le stockage de la feuille
Aperçu avant impression
Définissez PrintPreview à True pour afficher la feuille active via le TXLSPaginationModel partagé qu'utilisent la géométrie et le comptage des pages PDF
PreviewPage est en base un et borné à PreviewPageCount ; les commandes flèches, Page Up, Page Down, Home, End, molette et défilement vertical naviguent dans les pages logiques tant que l'aperçu est actif
PaginationModel expose le modèle en cache, SavePreviewPageAsMetafile écrit la page logique sélectionnée en EMF, et RefreshPagination reconstruit le cache après des changements de valeurs, dimensions, paramètres d'impression, sauts, titres ou dessins
Événements
OnSelectionChangesignale la ligne et la colonne nouvellement sélectionnéesOnWorksheetChangese déclenche après un changement de feuille activeOnBeforeEditpeut modifier la saisie proposée ou refuser l'éditionOnAfterEditsignale une édition de cellule validéeOnReferencePickpublie la plage A1 sélectionnée en mode référence
Exemple Delphi
Viewer := TXLSWorkbookViewer.Create(Self);
Viewer.Parent := Self;
Viewer.Align := alClient;
Viewer.XlsxWorkbook := Workbook;
Viewer.Editable := True;
Viewer.SelectRange(2, 1, 5, 3);
Caption := Viewer.SelectedRange;
Viewer.GoToCell(2, 3);
Viewer.FormulaBarText := '=A1*2';
Viewer.Undo;
Viewer.Redo;
Viewer.RefreshConditionalFormats;
Viewer.PrintPreview := True;
Viewer.PreviewPage := 1;
Viewer.SavePreviewPageAsMetafile('Preview.emf');
Viewer.GoToCell(12, 4);
Caption := Viewer.WorksheetName + ': ' + Viewer.SelectedCellText;
Voir Demo\Delphi\WorkbookViewer pour un visualiseur complet créé à l'exécution, avec ouverture de fichier et contrôles de feuille de calcul