Docs HotXLS

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 :

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

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 :

Fonctionnalités prises en charge

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 :

Voir aussi