Docs HotXLS

Membres API de façade XLSX supplémentaires

Cette page couvre les membres API publics plus petits déclarés par lxHandleX, y compris les options d'export HTML et les fonctions d'aide pour les appelants qui travaillent directement avec des références de cellules XLSX ou des textes de charge utile XML

Limite mémoire des tableaux de formules

property FormulaArrayMemoryLimit: Int64;
      
Borne la charge utile allouée par les tableaux de formules générés tels que MUNIT, vaut 64 MiB par défaut, s'applique aux workers de recalcul parallèles, et borne les valeurs en dessous d'un élément Double element

Options d'export HTML

type
  TXLSXHtmlExportOptions = class
    constructor Create;
    property Title: WideString;
    property WriteDocument: Boolean;
    property IncludeStyles: Boolean;
    property IncludeBOM: Boolean;
    property TableClass: WideString;
  end;
      
TitleDéfinit le titre du document lorsque WriteDocument est True
WriteDocumentLorsqu'il est True, écrit un document HTML complet. Lorsqu'il est False, écrit uniquement le fragment de tableau
IncludeStylesContrôle si le HTML exporté inclut le CSS généré et les informations de style en ligne
IncludeBOMContrôle si la sortie de fichier et de flux commence par un BOM UTF-8
TableClassAjoute un nom de classe CSS à l'élément <table> généré

Fonctions d'aide de référence XLSX

function XlsxColumnLabel(Col: Integer): WideString;
function XlsxCellRef(Row, Col: Integer): WideString;
function XlsxColumnIndex(const ColumnLabel: WideString): Integer;
function XlsxParseCellRef(const Ref: WideString; out Row, Col: Integer): Boolean;
function XlsxParseRangeRef(const Ref: WideString; out Row1, Col1, Row2, Col2: Integer): Boolean;
      
XlsxColumnLabelConvertit un index de colonne basé sur 1 en une étiquette de colonne de style A1 telle que A, Zou AA
XlsxCellRefConstruit une référence de cellule de style A1 à partir de numéros de ligne et de colonne basés sur 1
XlsxColumnIndexConvertit une étiquette de colonne de style A1 en index de colonne basé sur 1
XlsxParseCellRefAnalyse une référence de cellule unique de style A1 et renvoie les coordonnées de ligne et de colonne
XlsxParseRangeRefAnalyse une plage rectangulaire de style A1 et renvoie des limites inclusives basées sur 1

Fonctions d'aide d'échappement XML XLSX

function XlsxEscapeText(const Value: WideString): WideString;
function XlsxEscapeAttr(const Value: WideString): WideString;
      
XlsxEscapeText échappe le contenu des nœuds de texte XML, tandis que XlsxEscapeAttr échappe les valeurs d'attributs XML et préserve les espaces d'attributs qu'Excel doit relire exactement

Types de support des membres XLSX avancés

Les membres XLSX avancés documentés dans ce fichier d'aide passent et renvoient les types simples suivants, déclarés dans lxHandleX

{ Find and replace }
TXLSXFindFlag = (lxfMatchCase, lxfWholeCell, lxfSearchFormulas,
  lxfUseWildcards, lxfBackward, lxfByColumns);
TXLSXFindOptions = set of TXLSXFindFlag;
TXLSXReplaceAction = (raReplace, raSkip, raAbort);
TXLSXReplaceEvent = function(ARow, ACol: Integer;
  const ACurrentText: WideString; var ANewText: WideString):
  TXLSXReplaceAction of object;

{ Progress and recalculation policy }
TXLSXProgressPhase = (xlsxProgressReading, xlsxProgressWriting,
  xlsxProgressCalculating, xlsxProgressExporting);
TXLSXProgressState = (ppsBegin, ppsWork, ppsEnd);
TXLSXRecalcMode = (xrmManual, xrmIfDirty, xrmAlways);
TXLSXPasswordEvent = procedure(Sender: TObject;
  var PassWord: WideString) of object;

{ Custom document properties (docProps/custom.xml) }
TXLSXCustomPropType = (xcptText, xcptNumber, xcptDate, xcptBoolean);
TXLSXCustomProperty = class
  Name: WideString;
  PropType: TXLSXCustomPropType;
{ + TextValue, NumberValue, DateValue, BoolValue accessors }
end;

{ Table styles, fills, sorts, external links, controls, sparklines }
TXLSXTableStyleSectionKind = (xltssWholeTable, xltssHeaderRow,
  xltssTotalRow, xltssFirstColumn, xltssLastColumn, xltssFirstRowStripe,
  xltssSecondRowStripe, xltssFirstColumnStripe, xltssSecondColumnStripe,
  xltssFirstHeaderCell, xltssLastHeaderCell, xltssFirstTotalCell,
  xltssLastTotalCell { + subtotal and subheading slots });
TXLSXFillPattern = (xlsxFillNone, xlsxFillSolid, xlsxFillGray125
  { + the remaining ECMA-376 pattern values });
TXLSXGradientKind = (xlsxGradientNone, xlsxGradientLinear, xlsxGradientPath);
TXLSXSortBy = (xlsxBsValue, xlsxBsCellColor, xlsxBsFontColor, xlsxBsIcon);
TXLSXSortMethod = (xlsxSmNone, xlsxSmStroke, xlsxSmPinYin);
TXLSXExternalLinkKind = (xlsxExternalLinkUnknown, xlsxExternalLinkWorkbook,
  xlsxExternalLinkDde { + the remaining link kinds });
TXLSXFormControlType = (xfcButton, xfcCheckBox, xfcRadioButton, xfcComboBox,
  xfcListBox);
TXLSXSparklineAxisType = (xlsxSparklineAxisIndividual,
  xlsxSparklineAxisGroup, xlsxSparklineAxisCustom);
TXLSXSparklineEmptyCells = (xlsxSparklineEmptyGap, xlsxSparklineEmptyZero,
  xlsxSparklineEmptySpan);

{ Chart authoring and layout }
TXLSXChartBarGrouping = (xlsxBarGroupClustered, xlsxBarGroupStacked,
  xlsxBarGroupPercentStacked);
TXLSXChartMarkerSymbol = (xlsxMarkerAuto, xlsxMarkerCircle, xlsxMarkerDash,
  xlsxMarkerDiamond, xlsxMarkerDot, xlsxMarkerPlus, xlsxMarkerSquare,
  xlsxMarkerStar, xlsxMarkerTriangle, xlsxMarkerX, xlsxMarkerNone);
TXLSXChartDataLabelPos = (xlsxDlblPosDefault, xlsxDlblPosCenter,
  xlsxDlblPosInEnd, xlsxDlblPosOutEnd, xlsxDlblPosBestFit, xlsxDlblPosLeft,
  xlsxDlblPosRight, xlsxDlblPosTop, xlsxDlblPosBottom);
TXLSXChartMutable = class;     { mutable base of the chart model nodes }
TXLSXChartLayoutRect = record
  Left, Top, Right, Bottom: Double;
end;
TXLSXChartResolvedLayout = record
  ChartRect: TXLSXChartLayoutRect;
  TitleRect: TXLSXChartLayoutRect;
  LegendRect: TXLSXChartLayoutRect;
  PlotOuterRect: TXLSXChartLayoutRect;
  PlotInnerRect: TXLSXChartLayoutRect;
  { + per-axis title rectangles and visibility flags }
end;

{ Pagination keep-together blocks }
TXLSXKeepTogetherRange = record
  Row1, Row2: Integer;
  Level: Integer;
  ReplaceBiggerLevels: Boolean;
end;
TXLSXKeepTogetherCols = record
  Col1, Col2: Integer;
  Level: Integer;
  ReplaceBiggerLevels: Boolean;
end;

{ Diagnostics records }
TXLSXValidationIssue = record
  Row, Col: Integer;
  ValidationIndex: Integer;
  Reason: WideString;
end;
TXLSXUnknownFunctionInfo = record
  Sheet: Integer;
  Row, Col: Integer;
  Name: WideString;
  LocationKind: TXLSFormulaSymbolLocationKind;
  DefinedNameIndex: Integer;
  DefinedName: WideString;
end;
TXLSXRowMajorOrder = record
  CellOrder: array of Integer;
  RowStarts: array of Integer;
  MaxRow: Integer;
end;
      
Find and replaceTXLSXWorksheet.FindText / FindTextIn acceptent des TXLSXFindOptions (respect de la casse, cellule entière, recherche dans les formules, jokers, arrière, par colonnes) et ReplaceText prend un TXLSXReplaceEvent dont le résultat sélectionne raReplace, raSkipou raAbort par correspondance, avec un ANewText inscriptible pour les substitutions par cellule
Progress and savingTXLSXWorkbook.OnProgress / OnProgressEx délivrent TXLSXProgressPhase et (forme étendue) TXLSXProgressState avec un indicateur Abort ; RecalcBeforeSave est un TXLSXRecalcMode qui sélectionne le recalcul manuel, des seules cellules modifiées, ou systématique avant la sérialisation ; OnPassword est un TXLSXPasswordEvent qui fournit les mots de passe d'ouverture et d'écriture
Custom propertiesTXLSXWorkbook.CustomProperties est une collection TXLSXCustomProperties avec des créateurs typés AddText / AddNumber / AddDate / AddBoolean , FindByName, Deleteet Clear, plus l'énumération Count et Items ; chaque TXLSXCustomProperty étiquette sa valeur avec un TXLSXCustomPropType correspondant au mappage de variants ECMA-376
Style overlaysTXLSXStyleOverlays gère les surcharges par plage au-dessus des styles stockés : Add en crée une, ApplyToCell restyle une cellule unique, Resolve, ResolveRowDefaultet ResolveColumnDefault répondent aux recherches de style pendant le chargement, HasVirtualStyle signale les styles générés, MaxVirtualRow borne les lignes virtuelles, ApplyStructuralEdit décale les surcharges après des éditions de lignes ou de colonnes, et Clear, Countet Items maintiennent la collection
Styles, fills, and overlaysTXLSXFill expose Pattern, GradientKindet GradientStops via TXLSXFillPattern, TXLSXGradientKindet TXLSXGradientStop; TXLSXWorksheet.StyleOverlays est une collection TXLSXStyleOverlays dont les entrées TXLSXStyleOverlay transportent un rectangle, les parties de format concernées et le style de cellule de surcharge
Tables, sorts, and linksLes styles de table personnalisés (TXLSXWorkbook.CustomTableStyles) construisent la mise en forme des sections à partir d'emplacements TXLSXTableStyleSectionKind : la collection offre Add, FindByName, Delete, Clear, Countet Items, tandis que chaque TXLSXCustomTableStyle expose Name, SectionSize, PivotStyleet TableStyleFlag et répond aux recherches HasSection / ResolveSection ; les conditions de tri classent les clés avec TXLSXSortBy et l'ordre du texte avec TXLSXSortMethod; TXLSXExternalLink.Kind est un TXLSXExternalLinkKind et chaque lien liste des entrées TXLSXExternalDefinedName avec Name et RefersTo
Custom XML partsTXLSXWorkbook.CustomXmlParts préserve le XML personnalisé propre à chaque élément : Add, Deleteet Clear maintiennent les parties, chaque TXLSXCustomXmlPart transporte sa charge utile dans Xml plus un ItemId et une liste de chaînes SchemaRefs de relations de schéma (AddSchemaRef ajoute), et les parties préservées traversent l'enregistrement intactes
Cell style payloadsTXLSXCellStylePayload est un ensemble de styles immuable partageable, attaché à des cellules individuelles : Acquire / Release gèrent son compteur de références, Clone le copie, IsDefault teste le style par défaut, et InternKey identifie les charges utiles égales afin que le stockage puisse les dédupliquer
Controls, drawings, and sparklinesTXLSXWorksheet.FormControls est une collection TXLSXFormControls d'objets TXLSXFormControl — chacun expose ControlType, Caption, MacroName, LinkedCellet sa liste Items — typés par TXLSXFormControlType, avec TXLSXFormControlItems qui conserve le texte d'éléments par contrôle ; les objets de dessin signalent leur type via TXLSDrawingObjectKind, et les groupes de sparklines exposent la mise à l'échelle des axes et le comportement des cellules vides via TXLSXSparklineAxisType et TXLSXSparklineEmptyCells
ChartsLes groupes de tracés et les séries classent le groupement de barres, les symboles de marqueurs et les positions d'étiquettes de données avec les énumérations TXLSXChartBarGrouping, TXLSXChartMarkerSymbolet TXLSXChartDataLabelPos ; les nœuds du modèle de graphique partagent la classe de base TXLSXChartMutable , et TXLSXChartLayoutResolver.ResolveChart remplit un TXLSXChartResolvedLayout de rectangles TXLSXChartLayoutRect pour le graphique, le titre, la légende, le tracé et les titres d'axes
Pagination keep blocksKeepRowsTogether / KeepColumnsTogether sur la surface de pagination XLSX maintiennent les enregistrements TXLSXKeepTogetherRange et TXLSXKeepTogetherCols afin que la planification des sauts de page garde un bloc sur une seule page
DiagnosticsTXLSXWorksheet.CheckDataValidations renvoie des enregistrements TXLSXValidationIssue (cellule, index de validation, raison) ; TXLSXWorkbook.ScanUnknownFunctions renvoie des enregistrements TXLSXUnknownFunctionInfo localisant les appels non implémentés dans les cellules et les noms définis ; TXLSXCells.GetStorageStatistics remplit un enregistrement TXLSXCellStorageStatistics avec la comptabilité des cellules, blocs de lignes, octets par charge utile et vides stylés ; TXLSXWorksheet.BuildRowMajorCellOrder renvoie un TXLSXRowMajorOrder décrivant l'ordre de parcours en mémoire des cellules renseignées
TXLSXWorkbook.FormulaLocale lit ou écrit l'étiquette de locale utilisée lors de l'analyse et de la sérialisation des formules, reflétant la gestion de la locale de formule du classeur classique

Slicers de tables

Les slicers de tables (Excel 2013+) s'écrivent et s'inspectent via deux collections : TXLSXWorksheet.Slicers conserve les vues de slicer par feuille (TXLSXSlicer) et TXLSXWorkbook.SlicerCaches conserve les sources de données partagées (TXLSXSlicerCache)

property TXLSXWorksheet.Slicers: TXLSXSlicers;
property TXLSXWorkbook.SlicerCaches: TXLSXSlicerCaches;

{ TXLSXSlicers }
function Add(ATable: TXLSXTable; const AColumnName: WideString): TXLSXSlicer; overload;
function Add(ATable: TXLSXTable; const AColumnName: WideString;
  ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer; overload;
function IndexByName(const AName: WideString): Integer;
function FindByName(const AName: WideString): TXLSXSlicer;
procedure Delete(Index: Integer);
procedure Clear;
property Count: Integer;
property Items[Index: Integer]: TXLSXSlicer;

{ TXLSXSlicer view }
property Name: WideString;          { workbook-unique }
property CacheName: WideString;
property Cache: TXLSXSlicerCache;
property Caption: WideString;
property StartItem: Integer;
property ColumnCount: Integer;
property ColumnWidth: WideString;
property ShowCaption: Integer;
property StyleName: WideString;
property LockedPosition: Integer;
property RowHeight: WideString;
property RowHeightEmu: Integer;
procedure SetBounds(ARow1, ACol1, ARow2, ACol2: Integer);
property FromRow, FromCol, ToRow, ToCol: Integer;   { anchor cell corners }
property FromRowOff, FromColOff, ToRowOff, ToColOff: Integer; { EMU offsets }
property AnchorType: TXLSXAnchorEditAs;
property HasAnchor: Boolean;

{ TXLSXSlicers, load-path entry }
function AddInternal: TXLSXSlicer;

{ TXLSXSlicerCache }
property Name: WideString;          { e.g. Slicer_Region }
property SourceName: WideString;    { source table column / pivot field }
property IsTableCache: Boolean;
property IsPivot: Boolean;
property IsNonOlapPivot: Boolean;
property ItemCount: Integer;
property ItemCacheIndex[Index: Integer]: Integer;
property ItemSelected[Index: Integer]: Boolean;
function SetSelectedItems(const CacheItemIndices: array of Integer): Integer;
function ClearSelection: Integer;
property TableId: Integer;
property TableColumnId: Integer;
property SortOrder: WideString;     { '' | ascending | descending }
property CrossFilter: WideString;   { '' | none | showItemsWithDataAtTop | showItemsWithNoData }
property CustomListSort: Integer;   { -1 absent, else 0/1 }

{ TXLSXSlicerCaches }
function Add: TXLSXSlicerCache;
function FindByName(const AName: WideString): TXLSXSlicerCache;
function IndexOfName(const AName: WideString): Integer;
function FindForTableColumn(ATableId, ATableColumnId: Integer): TXLSXSlicerCache;
procedure Delete(Index: Integer);
procedure Clear;
property Count: Integer;
property Items[Index: Integer]: TXLSXSlicerCache;
      

Slicers.Add(Table, ColumnName) construit un slicer de bout en bout : il enregistre ou réutilise le cache sous-jacent nommé Slicer_<column>, réserve le nom défini #N/A correspondant, écrit l'extension slicerList de la feuille de calcul, et ancre la vue avec une ancre de dessin à compatibilité de balisage dont l'avis de repli couvre les versions antérieures d'Excel ; la seconde surcharge épingle le rectangle de la vue, sinon une ancre par défaut à droite de la table est utilisée

Les vues et caches chargés se reparse à l'ouverture, les caches partagés sont réutilisés entre les vues, et la suppression de la dernière vue d'un cache supprime le cache ; les attributs et extensions non reconnus conservent leur représentation d'origine, tandis que les liaisons de table suivent les identifiants de table enregistrés et les connexions de tableau croisé dynamique prises en charge suivent les identités de feuilles enregistrées

Les caches de tableau croisé dynamique non-OLAP importés pris en charge exposent l'inspection typée des membres et des changements de sélection sous garde via IsNonOlapPivot, ItemCount, ItemCacheIndex, ItemSelected, SetSelectedItems et ClearSelection ; voir la sélection de Slicers de tableau croisé dynamique pour le comportement de vue partagée, l'atomicité d'échec et la limite de masque de même champ importé

Les caches de tableau croisé dynamique non pris en charge conservent leurs octets d'origine ; une vue de Slicer chargée depuis un fichier est également atteignable comme objet de dessin via TXLSXDrawingObject.Slicer

Exemple

var
  Ref: WideString;
  Row, Col: Integer;
begin
  Ref := XlsxCellRef(10, 5);
  if XlsxParseCellRef(Ref, Row, Col) then
    Worksheet.Cells.Item[Row, Col].Value := 'Checked';
end;
    

Voir l'API d'infrastructure de classeur pour les callbacks d'E/S, les pools de styles du sérialiseur, la vérification des fichiers chiffrés et les contrats du graphe de dépendances de workspace