Docs HotXLS

Aperçu

HotXLS Logo
HotXLS Excel Read/Write Library est un composant Excel de lecture-écriture haute performance pour Delphi & C++Builder Il peut créer de nouvelles feuilles de calcul Excel et lire ou modifier des classeurs XLS et XLSX existants sans nécessiter l'installation de Microsoft Excel ou d'Office sur la machine
HotXLS est entièrement écrit en Object Pascal. Il lit et écrit les fichiers Excel directement au niveau binaire et OOXML, il n'y a donc ni surcoût d'automatisation COM/OLE ni dépendance à une licence ou à la présence d'Office. HotXLS prend en charge Delphi et C++Builder XE5 jusqu'à 13 Florence
La mise en forme des couleurs XLS classique reste volontairement basée sur la palette. Consultez le modèle de couleurs XLS classique pour la décision autour de ThemeColor / TintAndShade

Architecture à double façade

HotXLS expose deux unités de façade coexistantes afin que le code XLS historique et le nouveau code XLSX puissent coexister sans aucun refactor :
lxHandle Façade principale pour le format BIFF8 Excel 97–2003 (.xls), ainsi que pour l'export HTML, RTF, CSV et TSV. Tout le code utilisateur existant continue d'utiliser cette unité sans modification. Points d'entrée : TXLSWorkbook, TXLSWorksheet, IXLSWorkbook, IXLSRange
lxHandleX Façade principale pour le format OOXML Excel 2007+ (.xlsx) et pour la lecture/écriture de feuilles de calcul OpenDocument (.ods). Fournit ses propres types de classeur et de feuille de calcul afin que le comportement spécifique à XLSX ne soit pas greffé sur le chemin de code BIFF. Points d'entrée : TXLSXWorkbook, TXLSXWorksheet, TXLSXCell
Les deux façades partagent le même moteur de formules, la même couche de prise en charge Unicode et le même pipeline d'export Consultez l'aperçu de la façade XLSX pour la hiérarchie complète des classes exposées par lxHandleX.

Démarrage rapide

Les extraits suivants montrent le code minimal pour créer un classeur avec une feuille de calcul et écrire une valeur dans une cellule.

XLS classique (lxHandle)

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // Add a worksheet and give it a name
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // Write values to cells using A1 notation
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // Apply basic formatting
  ws.Range['A1'].Font.Bold := True;
  ws.Range['A1'].Interior.Color := clYellow;

  Book.SaveAs('output.xls');
end;

XLSX (lxHandleX)

uses lxHandleX;

var
  Book: TXLSXWorkbook;
  ws:   TXLSXWorksheet;
  cell: TXLSXCell;
begin
  Book := TXLSXWorkbook.Create;
  try
    ws := Book.Sheets.Add('Sheet1');

    // Write a string and a numeric value
    ws.Cells[1, 1].Value := 'Product';
    ws.Cells[1, 2].Value := 'Price';
    ws.Cells[2, 1].Value := 'Widget';
    ws.Cells[2, 2].Value := 9.99;

    // Apply a currency number format
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
Pour une démonstration plus complète couvrant les deux façades dans un seul projet d'exemple, consultez la démo de visite de l'API

Fonctionnalités

Entrées/sorties de fichiers et prise en charge des flux

Lisez des fichiers Excel existants, écrivez de nouveaux fichiers ou mettez à jour des fichiers existants, gérez la protection par mot de passe XLS classique et les flux de travail d'enregistrement chiffré XLSX, et listez rapidement les noms de feuilles à partir de fichiers ou flux XLS et XLSX sans charger le classeur entier. L'ouverture d'un CSV en tant que classeur est prise en charge via IXLSWorkbook.OpenCSV

Valeurs de cellule et formules

Lisez et écrivez des valeurs de cellule de tous les types Excel natifs : nombre, texte, date/heure, booléen et formule Le moteur de calcul intégré évalue les formules dans les classeurs XLS classiques et XLSX, en prenant en charge :
  • Fonctions de texte (LEFT, MID, TRIM, SUBSTITUTE, …)
  • Fonctions de date et de jour ouvré (DATE, NETWORKDAYS, WORKDAY, …)
  • Fonctions d'ingénierie et de conversion de base (BIN2DEC, HEX2DEC, …)
  • Fonctions binaires (BITAND, BITOR, BITXOR, …)
  • Fonctions statistiques et d'agrégat (AVERAGE, SUMIF, COUNTIFS, …)
  • Fonctions mathématiques (ROUND, MOD, POWER, …)
Un rappel OnUserFunction vous permet de gérer au runtime des fonctions de feuille de calcul personnalisées ou non prises en charge. Consultez le rappel OnUserFunction pour la signature et les exemples
Formula evaluation example

Mise en forme des cellules

Accès complet aux attributs d'apparence des cellules :
  • Polices — nom, taille, couleur (RGB ou couleur de thème + teinte), gras, italique, souligné, barré, exposant, indice, ombre et contour
  • Alignement — alignement horizontal et vertical, orientation du texte (angle), niveau d'indentation, renvoi à la ligne, ajustement (shrink-to-fit) et ordre de lecture (RTL/LTR)
  • Bordures — les quatre bords et les diagonales, le style de ligne, l'épaisseur et la couleur RGB / de thème
  • Intérieur (remplissage) — remplissage uni, remplissages à motifs, couleurs de premier plan et d'arrière-plan, y compris la couleur de thème avec TintAndShade
  • Formats de nombre — chaînes de format intégrées et personnalisées pour la date, l'heure, la devise, le pourcentage et la notation scientifique
  • Commentaires / annotations — ajouter, lire et styler les commentaires de cellule

Opérations de plage

IXLSRange (façade classique) et TXLSXRange (façade XLSX) fournissent un ensemble complet d'opérations de plage :
  • Fusionner et défusionner des cellules ; accéder à la zone fusionnée de toute cellule
  • Copier, déplacer, insérer et supprimer des plages, avec contrôle de la direction de décalage
  • Grouper et dégrouper des lignes ou des colonnes pour des vues de plan/dépliées
  • Ajuster automatiquement la hauteur des lignes et la largeur des colonnes au contenu des cellules
  • Appliquer des styles de cellule nommés intégrés (ApplyBuiltinStyle)
  • Sélections multi-zones (TXLSWorksheet.SelectAreas)
  • Rappel d'itération ForEachCell pour le traitement par lots des cellules

Fonctionnalités de feuille de calcul

Le contrôle au niveau de la feuille de calcul couvre :
  • Nom de feuille, couleur d'onglet, visibilité (masquée / très masquée) et navigation par index
  • Protection de feuille avec granularité par autorisation ; protection au niveau du classeur
  • Figer les volets, fractionner les volets et position de défilement
  • Plages de filtre automatique avec critères ; règles de validation des données de liste
  • Mise en forme conditionnelle : échelles de couleurs (2 et 3 couleurs), barres de données et jeux d'icônes
  • Recherche de texte et remplacement de texte dans une feuille de calcul
  • Options d'affichage : couleur de la grille, mode d'affichage des formules, affichage des zéros, affichage des en-têtes, affichage de droite à gauche, affichage des symboles de plan et niveau de zoom
  • Tableaux structurés (TXLSTable / TXLSXTable) : ajouter, accéder et styler les tableaux Excel avec des lignes d'en-tête et des lignes à bandes
  • Graphiques : ajouter des feuilles de graphique et des graphiques incorporés via TXLSWorksheetsAddChartSheet et TXLSXChart

Liens hypertexte et plages nommées

Ajoutez et lisez des liens hypertexte (URL, mailto et références de cellule dans le classeur) via IXLSHyperLinks. Définissez et résolvez des plages nommées au niveau du classeur et de la feuille de calcul via IXLSNames / TXLSXDefinedNames. Les plages nommées peuvent être utilisées dans les formules et résolues à nouveau en une plage de cellules via RefersToRange

Images et formes

Incorporez des images matricielles (BMP, JPG, PNG, GIF) dans les feuilles de calcul via TXLSShapes.AddPicture / TXLSXWorksheet.AddImage. Créez des zones de texte autonomes dans le XLS classique à l'aide de TXLSShapes.AddTextBox. Préservez les règles de connecteur et de solveur OfficeArt créées par Excel dans les dessins BIFF8, et exposez les options FOPT brutes des formes via TXLSShape.OfficeArtOptions pour les flux de travail de dessin experts.

Mise en page et impression

Accès complet à la mise en page d'impression via IXLSPageSetup :
  • Format papier (A4, Letter, Legal et bien d'autres ; voir PaperSize)
  • Orientation (portrait / paysage), marges, centrage horizontal / vertical
  • Chaînes d'en-tête et de pied de page avec les codes de mise en forme Excel (gras, italique, numéro de page, date, etc. ; voir les codes de mise en forme En-tête/Pied de page)
  • Sauts de page horizontaux et verticaux manuels
  • Mise à l'échelle ajuster aux pages ; pourcentage de zoom ; zone d'impression ; titres d'impression (répéter des lignes / colonnes)
  • Qualité brouillon ; noir et blanc ; impression de la grille ; impression des en-têtes ; impression des notes

Formats d'export

Exportez des classeurs entiers, des feuilles de calcul individuelles ou des plages de cellules arbitraires vers :
  • HTML — document complet ou fragment de tableau en ligne pour les flux de travail d'aperçu ou d'e-mail ; contrôlable via TXLSHTMLExport et TXLSXHtmlExportOptions
  • RTF — texte enrichi pour l'importation dans un traitement de texte
  • CSV — valeurs séparées par des virgules avec délimiteur et encodage configurables
  • TSV — valeurs séparées par des tabulations
  • ODS — feuille de calcul OpenDocument via la façade lxHandleX

Export de base de données et de grille

Exportez n'importe quel dataset compatible TDataSet ou un TDBGrid directement vers Excel, HTML ou RTF à l'aide des composants TDataToXLS ou TGridToXLS. Les deux composants déclenchent les événements AfterCell, AfterRow, AfterTitle et AfterGroup pour un contrôle fin de la sortie, et prennent en charge des champs de regroupement à plusieurs niveaux.

Préservation du projet VBA

HotXLS préserve les charges utiles de projet VBA lors du round-trip de classeurs avec macros. L'inspection en lecture seule des modules est disponible via TXLSVBAProject et TXLSVBAModule. Appelez IXLSWorkbook.HasVBAProject pour détecter une charge utile et LoadVBAProjectFromFile / SaveVBAProjectToFile pour la transférer entre fichiers.

Texte Unicode et international

Toute la gestion des chaînes est nativement Unicode. HotXLS lit et écrit des fichiers Excel créés dans n'importe quelle langue, y compris le CJK, l'arabe, l'hébreu, le thaï et d'autres écritures, avec une prise en charge correcte du texte bidirectionnel et de l'ordre de lecture
Unicode character support example

Tableaux croisés dynamiques (XLS classique)

Créez des tableaux croisés dynamiques à partir d'une plage source avec TXLSWorksheet.AddPivotTable, configurez le placement des champs et les formats de nombre des champs de données, et inspectez le modèle de pivot via TXLSWorksheet.PivotTables. Consultez l'API de tableau croisé dynamique XLS classique pour le détail des champs et des filtres

Avantages

No Office dependency Lit et écrit les fichiers XLS et XLSX directement au niveau binaire. Microsoft Excel ou Office n'a pas besoin d'être installé, sous licence ou en cours d'exécution. Cela élimine le surcoût d'automatisation COM/OLE, évite les restrictions de threads imposées par l'interopérabilité Office, et permet à HotXLS d'être utilisé dans des contextes de serveur et de service où une installation de bureau d'Office est peu pratique
High performance Les analyseurs BIFF8 et OOXML sont écrits en Object Pascal natif, sans allocation de DOM XML intermédiaire pour le chemin critique. De grands classeurs avec des centaines de milliers de lignes peuvent être lus et écrits avec une faible mémoire de pointe. La déduplication des chaînes partagées et la compression des formules partagées sont appliquées automatiquement pour garder des fichiers de petite taille
OLE migration path La surface API de la façade classique (classeur, feuille de calcul, plage, police, bordures, intérieur, mise en page) reflète étroitement le modèle objet Excel familier de l'automatisation OLE. Cela rend la migration des projets existants basés sur OLE simple : remplacez les appels COM par des appels HotXLS, supprimez la dépendance à Office, et gagnez en performance native
Dual-facade design Le code XLS historique continue de compiler et de s'exécuter sans modification contre lxHandle tandis que le nouveau code XLSX utilise la façade plus riche lxHandleX. Migrer un format de fichier à la fois est sûr et incrémental
Formula engine included Un moteur de calcul multipasse intégré gère les fonctions de feuille de calcul les plus courantes sans exiger qu'Excel recalcule à l'ouverture. Les fonctions personnalisées sont gérées via le rappel OnUserFunction.
Easy to use Des composants Delphi prêts à l'emploi (TDataToXLS, TGridToXLS) ne nécessitent aucun code pour les tâches d'export courantes. L'API de plage fluide prend en charge la notation A1, la notation R1C1 et l'indexation de lignes/colonnes basée sur zéro
Thread-safe file I/O Parce qu'il n'y a pas de processus Office partagé, plusieurs instances de TXLSXWorkbook peuvent être créées et enregistrées simultanément sur des threads indépendants sans synchronisation, ce qui rend HotXLS adapté aux serveurs de génération de rapports multi-threadés

Compatibilité

HotXLS est compatible avec les versions RAD Studio suivantes :
Delphi XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
C++Builder XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
Target platforms Windows 32 bits et 64 bits
Excel file formats XLS (BIFF8, Excel 97–2003), XLSX (OOXML, Excel 2007+), ODS (OpenDocument 1.2)
Export-only formats HTML, RTF, CSV, TSV

Voir aussi