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
property FormulaArrayMemoryLimit: Int64;
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
type
TXLSXHtmlExportOptions = class
constructor Create;
property Title: WideString;
property WriteDocument: Boolean;
property IncludeStyles: Boolean;
property IncludeBOM: Boolean;
property TableClass: WideString;
end;
| Title | Définit le titre du document lorsque WriteDocument est True |
| WriteDocument | Lorsqu'il est True, écrit un document HTML complet. Lorsqu'il est False, écrit uniquement le fragment de tableau |
| IncludeStyles | Contrôle si le HTML exporté inclut le CSS généré et les informations de style en ligne |
| IncludeBOM | Contrôle si la sortie de fichier et de flux commence par un BOM UTF-8 |
| TableClass | Ajoute un nom de classe CSS à l'élément <table> généré |
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;
| XlsxColumnLabel | Convertit un index de colonne basé sur 1 en une étiquette de colonne de style A1 telle que A, Zou AA |
| XlsxCellRef | Construit une référence de cellule de style A1 à partir de numéros de ligne et de colonne basés sur 1 |
| XlsxColumnIndex | Convertit une étiquette de colonne de style A1 en index de colonne basé sur 1 |
| XlsxParseCellRef | Analyse une référence de cellule unique de style A1 et renvoie les coordonnées de ligne et de colonne |
| XlsxParseRangeRef | Analyse une plage rectangulaire de style A1 et renvoie des limites inclusives basées sur 1 |
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
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 replace | TXLSXWorksheet.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 saving | TXLSXWorkbook.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 properties | TXLSXWorkbook.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 overlays | TXLSXStyleOverlays 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 overlays | TXLSXFill 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 links | Les 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 parts | TXLSXWorkbook.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 payloads | TXLSXCellStylePayload 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 sparklines | TXLSXWorksheet.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 |
| Charts | Les 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 blocks | KeepRowsTogether / 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 |
| Diagnostics | TXLSXWorksheet.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 classiqueLes 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
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