Vue d'ensemble de la façade XLSX (lxHandleX)
lxHandleX est l'unité de façade dédiée aux flux de travail de classeurs Excel 2007+ (.xlsx) et OpenDocument Spreadsheet (.ods). Elle coexiste avec la façade d'origine lxHandle afin que le code hérité continue de fonctionner sans aucune modification :
lxHandle— façade principale pour le format BIFF Excel 97-2003 (.xls) ainsi que les exports HTML, RTF, CSV et TSV. Tout le code utilisateur existant continue d'utiliser cette unité sans modificationlxHandleX— façade principale pour le format OOXML Excel 2007+ (.xlsx), les flux de travail de lecture/écriture ODS et le sous-ensemble valeurs-et-styles XLSB ; elle fournit des types distincts de classeur et de feuille de calcul, la détection automatique de package viaOpen,SourceFormat, les formats de sortie explicites etTODSExportOptions
Hiérarchie des classes
La façade XLSX expose les classes suivantes :
type
TXLSXWorkbook = class // classeur de niveau supérieur avec SaveAs / Open
TXLSXHtmlExportOptions = class // options de document HTML, de style, de BOM et de classe de tableau
TODSExportOptions = class // options d'export ODS pour le générateur, les graphiques et les images
TXLSXSheets = class // collection de feuilles de calcul du classeur
TXLSXFonts = class // palette de polices au niveau du classeur
TXLSXFont = class // descripteur d'une seule police
TXLSXFills = class // palette de remplissage au niveau du classeur
TXLSXFill = class // remplissage unique (motif + couleur fg/bg)
TXLSXBorders = class // palette de bordures au niveau du classeur
TXLSXBorder = class // quatre côtés + bordure diagonale
TXLSXNumberFormats = class // codes de formats personnalisés au niveau du classeur
TXLSXDefinedNames = class // plages nommées au niveau du classeur
TXLSXWorksheet = class // feuille de calcul unique avec cellules et décorations
TXLSXCells = class // collection de cellules de la feuille de calcul
TXLSXCell = class // cellule unique (valeur, formule, références de style *Index)
TXLSXRange = class // wrapper de plage rectangulaire de feuille de calcul
TXLSXMergedCells = class // collection de plages fusionnées
TXLSXHyperlinks = class // collection de liens hypertexte
TXLSXComments = class // collection de commentaires de cellules
TXLSXImages = class // collection d'images (dessins + médias)
TXLSXConditionalFormats = class // règles de mise en forme conditionnelle
TXLSXDataValidations = class // règles de validation de données
TXLSXTables = class // collection de tableaux de style Excel
TXLSXCharts = class // collection de graphiques (ancrés ou pleine page)
TXLSXChart = class // graphique unique (colonne / barre / ligne / secteur / nuage / bulles / radar)
TXLSXChartSeries = class // série de graphique avec plages de catégories, de valeurs et de tailles de bulles
TXLSXTextBox = class // zone de texte de dessin autonome de feuille de calcul
TXLSXRichText = class // contenu de texte enrichi par segment pour les cellules
TXLSXAlignment = class // alignement / retour à la ligne / retrait / rotation de cellule
TXLSXExternalLinks = class // collection de liens de classeurs externes
TXLSXExternalLink = class // référence de classeur externe unique (URL cible + noms de feuilles)
Ces classes sont indépendantes de lxHandle.TXLSWorkBook et de
lxHandle.TXLSWorksheet. Les applications qui ont besoin des deux formats peuvent
utiliser les deux façades côte à côte :
uses
lxHandle, // classeur XLS / HTML / RTF / CSV (TXLSWorkBook)
lxHandleX; // classeur XLSX (TXLSXWorkbook)
Démarrage rapide
La façade XLSX suit les mêmes conventions d'appel que la façade BIFF —
SaveAs / Open sur le classeur,
Sheets.Add / Sheets[i] sur la collection de feuilles
de calcul, et Cells.Item[Row, Col].Value sur la collection de
cellules. L'exemple ci-dessous crée un petit classeur qui exerce toutes les
fonctionnalités actuellement prises en charge :
uses lxHandleX;
var
wb: TXLSXWorkbook;
ws: TXLSXWorksheet;
bold, yellow, box, currency: Integer;
begin
wb := TXLSXWorkbook.Create;
try
bold := wb.Fonts.Add('Calibri', 12, True, False);
yellow := wb.Fills.AddSolid($FFFFFF00);
box := wb.Borders.AddBox(xlsxBorderThin);
currency := wb.NumberFormats.Add('"$"#,##0.00');
ws := wb.Sheets.Add('Demo');
ws.Cells.Item[1, 1].Value := 'Hello';
ws.Cells.Item[1, 1].FontIndex := bold + 1;
ws.Cells.Item[1, 2].Value := 123.45;
ws.Cells.Item[1, 2].NumberFormatIndex := currency + 1;
ws.Cells.Item[2, 1].Value := Now; // marquée comme date
ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
ws.Cells.Item[3, 1].FillIndex := yellow + 1; // cellule en surbrillance
ws.Cells.Item[3, 2].BorderIndex := box + 1; // cellule encadrée
ws.ColWidth[1] := 24;
ws.RowHeight[1] := 28;
ws.MergeCells(4, 1, 4, 3);
ws.Range['A8:C10'].Merge(True); // fusion sur les lignes
ws.AddHyperlink(5, 1, 'https://www.loslab.com', 'Visit losLab');
ws.AddComment(5, 2, 'Important note', 'Kevin');
ws.AddImageFromFile(6, 1, 'logo.png');
ws.AddConditionalFormat('B1:B10', xlsxCfOpGreaterThan, '100');
ws.AddListValidation('C1:C5', 'Yes,No,Maybe');
wb.DefinedNames.Add('SalesData', 'Demo!$A$1:$B$10');
wb.SaveAs('demo.xlsx');
finally
wb.Free;
end;
end;
Fonctionnalités prises en charge
- Valeurs de cellules : nombres, booléens, chaînes, dates, formules
- Table des chaînes partagées (
xl/sharedStrings.xml) avec déduplication sur le chemin d'écriture - Palettes de style au niveau du classeur —
Workbook.Fonts,Fills,BordersetNumberFormats— plus lesFontIndex/FillIndex/BorderIndex/NumberFormatIndexpar cellule. SaveAs émet de vrais blocs<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>; Open les analyse en retour afin que Nom/Taille/Gras/Italique/Couleur, les motifs de remplissage, les bords de bordure et les formats numériques personnalisés survivent tous à l'aller-retour - Largeurs de colonne via
Worksheet.ColWidth[Col]et hauteurs de ligne viaWorksheet.RowHeight[Row](bloc<cols>de la feuille de calcul et attributshtde chaque<row>) cellXfde date intégré à l'indexXlsxXfIndexDate; les valeursTDateTimesont marquées automatiquement- Cellules fusionnées (
<mergeCells>), y comprisTXLSXRange.Merge(True)pour une fusion de style Excel sur les lignes - Plages de feuille de calcul via
Worksheet.Range,RCRange,UsedRange,EntireRowetEntireColumn. Consultez TXLSXRange pour les valeurs par lots, les formules,SetArrayFormula, les index de style, les formats numériques, les bordures, les indicateurs de protection, l'ajustement automatique, la fusion, le décalage, le redimensionnement, le tri multi-clésSort, les styles de cellule intégrésApplyBuiltinStyle, les fonctions d'aide de copie/déplacement, les fonctions d'aide d'insertion/suppression de lignes/colonnes entières et l'export HTML de la plage sélectionnée - Liens hypertexte (
<hyperlinks>) soutenus par des relations par feuille de calcul pour les URL externes - Commentaires de cellules avec dessin VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) afin que les bulles s'affichent dans Excel - Images intégrées (PNG / JPEG / GIF / BMP) via
Worksheet.Images, écrites dansxl/media/imageN.<ext>plus le XML de dessin et les relations par feuille - Zones de texte de dessin autonomes via
Worksheet.AddTextBox, écrites comme des formes de dessin de feuille de calcul avec des corps de texte au lieu de commentaires de cellules, avec recherche d'ancre directe et fonctions d'aide de suppression de plage - Plages nommées au niveau du classeur via
Workbook.DefinedNames(à l'échelle du classeur ou de la feuille viaSheetIndex) - Calcul de formules via
Workbook.CalculateetWorksheet.Calculate, partageant l'analyseur et l'évaluateur de formules XLS pour les formules à signe égal, les références de cellules et de plages, les cellules de formules référencées, les références inter-feuilles, les plages de noms définis et les fonctions de texte, de date, de jour ouvré, d'ingénierie/conversion de base, bit à bit, statistiques, d'agrégat et mathématiques prises en charge ; utilisezWorkbook.OnUserFunctionouWorkbook.OnUserFunctionExpour résoudre les fonctions personnalisées ou non prises en charge - Mise en forme conditionnelle par feuille de calcul
(
Worksheet.ConditionalFormats) et validation de données (Worksheet.DataValidations), y compris le raccourci de liste déroulanteAddListValidation(Range, Items) - Groupes de plan de lignes / colonnes (
RowOutlineLevel,ColOutlineLevel), état masqué (RowHidden,ColHidden) et état de groupe réduit (RowCollapsed,ColCollapsed) - Volets figés via
Worksheet.FreezePanes(Row, Col) - Mise en page — six propriétés de marge, taille de papier, orientation,
échelle de page, ajustement à la largeur / à la hauteur, plus
HeaderText/FooterText. Les constantes nomméesxlsxPaper*telles quexlsxPaperLetter,xlsxPaperA4,xlsxPaperA3etxlsxPaperLegalpeuvent être assignées àPaperSize - Filtre automatique (
Worksheet.SetAutoFilter) - Tableaux de style Excel (TXLSXTable) avec informations de style, colonnes de tableau, étiquettes et fonctions de ligne de totaux, formules de colonne calculée et formules de ligne de totaux
API de sous-collections de la façade
Les classes de collection de la façade gèrent les mises en forme conditionnelles, les validations de données, les plages nommées, les images et les tableaux. Voici les membres essentiels de chaque collection :
- TXLSXConditionalFormats :
Expose les règles de mise en forme conditionnelle
Propriétés :
CountMéthodes :AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations :
Expose les validations de données
Propriétés :
CountMéthodes :AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames :
Expose les noms définis (plages nommées)
Propriétés :
CountMéthodes :DeleteByName,FindByName,IndexOfName - TXLSXImages :
Expose les images intégrées
Propriétés :
CountMéthodes :DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables :
Expose les tableaux Excel
Propriétés :
CountMéthodes :AddExisting,DeleteByName,FindByName,IndexOfName - TXLSConnections :
Expose les connexions de données externes du classeur via
Workbook.ConnectionsPropriétés :CountMéthodes :Add,AddExisting,FindById,FindByName,NextId,Validate - TXLSQueryTables :
Expose les définitions de résultats de requêtes de la feuille de calcul via
Worksheet.QueryTablesPropriétés :CountMéthodes :Add,AddExisting,FindByName,FindByResultTableName,Validate
Fonctionnalités prises en charge
- Propriétés du document (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Company, etc.) écrites dansdocProps/core.xml+docProps/app.xml - Protection par mot de passe des feuilles de calcul / classeurs (hachage 16 bits hérité)
via
Worksheet.Protect/Workbook.ProtectWorkbook; enregistrement protégé par mot de passe AES compatible Excel viaSaveAsEncrypted, utilisant l'accélération AES-NI lorsqu'elle est disponible et un repli logiciel portable sinon.OpenEncryptedlève toujours une exception pour les packages chiffrés jusqu'à ce que la prise en charge du déchiffrement arrive - Préservation du projet VBA via
Workbook.LoadVbaProjectFromFile/VbaProject; les octets font l'aller-retour sans changement. Les charges utilesvbaProject.binvalides peuvent également être inspectées viaWorkbook.ParsedVBAProject - Graphiques — colonne / barre / ligne / secteur / aire / anneau via
TXLSXChart, ancrés
sur une feuille de calcul (
Worksheet.AddChart) ou en pleine page sur une feuille de graphique dédiée viaWorkbook.AddChartSheet(Name, Type, Title) - Cellules de texte enrichi via TXLSXRichText avec mise en forme de police par segment ; fait l'aller-retour via la table de chaînes partagées
- Ancres de liens hypertexte internes via
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(aucune relation rels nécessaire) - API de copie / déplacement / effacement de plages de cellules sur la feuille de calcul
(
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Alignement des cellules via
TXLSXAlignment +
AlignmentIndexpar cellule - Couleur de l'onglet de feuille via
Worksheet.TabColor/TabColorIsAuto - Mode d'affichage de la feuille via
Worksheet.View, y compris l'affichage normal, l'aperçu des sauts de page et l'affichage de mise en page - Chemin SaveAs en streaming (
Workbook.StreamingWrite := True) qui construit et écrit chaque feuille de calcul sans conserver les autres en mémoire ; l'accumulateur XML par ligne utiliseTXLSWideStringBuilderafin que la boucle de cellules reste linéaire Openen aller-retour pour tout ce qui précède, sauf les packages XLSX chiffrés et l'identification des feuilles de graphique, qui retombent sur le comportement partiel documenté- Export et import basés sur des flux :
SaveAs(Stream),Open(Stream)pour une utilisation en mémoire ou dans un champ BLOB - Lecture/écriture OpenDocument Spreadsheet :
Workbook.OpenODSet leWorkbook.Opengénérique peuvent charger des packages.ods, tandis queWorkbook.SaveAsODSetSaveAs(..., xlsxOpenDocumentSpreadsheet)écrivent directement la sortie ODS. La surface du format couvre les valeurs, les formules, les styles, le texte enrichi, les dimensions de lignes/colonnes, les fusions, les liens hypertexte, les images, les graphiques, les plages nommées, le filtre automatique, les mises en forme conditionnelles, les validations de données, les volets figés, la mise en page, les en-têtes/pieds de page, les zones d'impression, les sauts de page, les groupes de plan, la couleur d'onglet et la visibilité des feuilles sur les allers-retours pris en charge - Options d'export ODS : passez
TODSExportOptionsàSaveAsODSpour remplacer la chaîne du générateur de document ou supprimer les parties graphiques et images lors de la production d'un package plus léger - Import de texte délimité :
Workbook.OpenCSV(FileName)etWorkbook.OpenCSV(Stream)importent des données CSV ou TSV avec détection de séparateur, détection d'encodage BOM, citation de style RFC 4180 et inférence facultative du type de valeur.Open(FileName)achemine les fichiers.csvet.tsvvers l'importateur automatiquement - Analyse des métadonnées du classeur :
Workbook.GetSheetNames(FileName, List)etWorkbook.GetSheetNames(Stream, List)lisent les noms de feuilles ordonnés depuisxl/workbook.xmlsans charger le XML de feuille de calcul - Protection des cellules :
TXLSXCell.LockedetFormulaHidden— contrôlent quelles cellules sont modifiables ou quelles formules sont visibles lorsque la feuille est protégée - Ajustement automatique de la largeur de colonne et de la hauteur de ligne à partir du contenu des cellules :
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Insertion et suppression de lignes / colonnes avec cascade complète :
InsertRows,DeleteRows,InsertCols,DeleteCols. Les effets secondaires se propagent à travers les cellules, les plages fusionnées, les liens hypertexte, les commentaires, les volets figés, les références de chaînes de plage, les tableaux, les formules de cellules, les formules de mise en forme conditionnelle / validation de données, les cibles de liens hypertexte internes, les références de mise en page, les sauts de page manuels, les critères de colonnes de filtre automatique, les plages de séries de graphiques, les noms définis, les ancres d'images et les ancres de graphiques - Mise en page étendue :
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Accès à la charge utile opaque du pilote d'impression via
PrinterDriverData,HasPrinterDriverDataetClearPrinterDriverData; les tableaux d'octets et les copies de feuilles de calcul ont des propriétaires indépendants, les charges utiles sont limitées à 1 MiB, et l'effacement supprime la relation de feuille et la partie binaire du package sans remplacer les champs typés de mise en page ; le chargement ne lie que l'identifiant exact de relationpageSetupavec le type de relation requis et une cible existante, tandis que les références manquantes, de mauvais type ou pendantes émettentxlsDiagnosticPrinterSettingsRelationshipInvalidsans emprunter une autre partie binaire - Calibration de rendu locale au classeur via
RenderCalibration,CaptureRenderCalibrationetResetRenderCalibration, avec une affectation validée de l'enregistrement entier et des instantanés d'opération indépendants pour la largeur, la hauteur, l'interligne, les marges de cellule, la mise à l'échelle écran et le DPI de mesure - Géométrie et mesure de polices détenues par l'opération via
CreateRenderGeometry, avec calibration immuable et identité de génération du classeur, clés de cache complètes conscientes des polices et des renvois à la ligne, mise en cache locale bornée, et conversions partagées pixel, point, largeur de colonne, MDW et largeur utilisable de cellule - L'AutoFit capture un instantané de géométrie local au classeur par opération et mesure les polices visibles des cellules et le texte renvoyé à la ligne avec l'espacement et les marges calibrés ; la pagination capture un instantané séparé par construction, garde les pages logiques existantes inchangées jusqu'à la construction suivante et n'écrit jamais les dimensions de la feuille de calcul
- Visibilité des feuilles :
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) etIsSelected - Sauts de page manuels :
AddRowBreak,AddColBreak, recherche par index et fonctions d'aide de suppression de plage - Critères de colonnes de filtre automatique :
Worksheet.AddAutoFilterColumnavec des règles de filtre à un ou deux critères ET/OU, plusWorksheet.AutoFilterColumns.FindByColIdetDeleteByColIdpour la recherche et la suppression directes de critères (TXLSXAutoFilterColumn) - Base de date du classeur :
Workbook.Date1904bascule entre les époques de date 1900 (par défaut Windows) et 1904 (Mac) - Bordures diagonales :
TXLSXBorder.DiagonalUpetDiagonalDownactivent les lignes diagonales ; le côtéDiagonalporte le style et la couleur - Propriétés de police étendues :
TXLSXFont.VertAlign(exposant / indice),OutlineFont,Shadow,Family,CharSet - Métadonnées de plages nommées :
TXLSXDefinedName.HiddenetComment - Options d'affichage des feuilles :
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Palette de couleurs indexées OOXML héritée :
Workbook.IndexedColor[0..63]avecResetIndexedColors - Liens de classeurs externes :
Workbook.ExternalLinks/ TXLSXExternalLink — aller-retour des métadonnées URL cible + noms de feuilles - Connexions de données externes et résultats de requêtes :
Workbook.Connections/Worksheet.QueryTables— liaisons typées de rafraîchissement, d'identifiants, de commande, web, texte, paramètre, champ, table et nom défini avec un aller-retour tolérant aux extensions - Prise en charge des couleurs de thème sur
TXLSXFont,TXLSXFilletTXLSXBorderEdge: propriétésColorTheme/ColorIndex/TintAndShadeavec ordre de priorité (thème > indexé > RGB) - Conversion BIFF8 via les surcharges fichier et flux de
SaveXLSXWorkbookAsXLS, avec un plan de palette déterministe à 56 couleurs, la préservation des emplacements indexés déjà utilisés par les styles du classeur, une quantification OKLab pondérée quand les couleurs directes dépassent les emplacements disponibles, un parcours creux des cellules chargées et un rejet en préflight des lignes ou colonnes hors de la grille XLS ; les champs d'impression typés et les données d'impression opaques sont convertis indépendamment, les bornes BIFF8 sont vérifiées avant l'écriture du flux de destination, les champs standard priment sur les valeurs par défaut privées dupliquées, et l'indicateur OOXML-onlyUsePrinterDefaultsn'est pas synthétisé en XLS Classic - Export CSV :
Workbook.SaveAsCSV— 4 surcharges (FileName ou Stream × feuille active / SheetIndex explicite + Delimiter), UTF-8 avec BOM, citation RFC 4180 - Export HTML :
Workbook.SaveAsHTMLetTXLSXRange.SaveAsHTMLécrivent des tableaux HTML5 pour une feuille de classeur entière ou uniquement le rectangle sélectionné. Les surcharges d'options acceptentTXLSXHtmlExportOptionspour la sortie de document complet, l'émission de style, l'émission BOM et la dénomination de classe de tableau - Export RTF :
Workbook.SaveAsRTF— 4 surcharges, tableau RTF 1.6 avec largeurs de colonnes, mise en forme de police par cellule et unicode BMP complet via les échappements\uN?signés sur 16 bits
Infrastructure partagée
Les deux façades partagent un ensemble commun d'unités d'aide de bas niveau, ce qui signifie que les descripteurs de style, les tables de hachage, les arbres AVL, les E/S ZIP et XML, les conversions RGB-vers-HLS et les constructeurs de chaînes sont écrits une seule fois et utilisés par l'un ou l'autre chemin Les unités d'aide partagées incluent :
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— descripteurs de style moderneslxRgb— conversion de couleur RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— conteneurs de déduplication et blocs de construction de tas de cellules basés sur AVLlxXmlReader,lxXmlWriter,lxZipArchive— couche de transport OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— fonctions d'aide d'assemblage de flux et de chaînes