HotXLS-documentatie

Additionele XLSX-facade-API-leden

Deze pagina behandelt kleinere openbare API-leden die door lxHandleXworden gedeclareerd, inclusief HTML-exportopties en hulpfuncties voor aanroepers die rechtstreeks met XLSX-celverwijzingen of XML-payloadtekst werken.

Geheugenlimiet voor formule-arrays

property FormulaArrayMemoryLimit: Int64;
      
Begrenst de payload die door gegenereerde formule-arrays zoals MUNITwordt toegewezen, staat standaard op 64 MiB, geldt ook voor parallelle herberekeningsworkers en kapwaarden onder één Double -element af

HTML-exportopties

type
  TXLSXHtmlExportOptions = class
    constructor Create;
    property Title: WideString;
    property WriteDocument: Boolean;
    property IncludeStyles: Boolean;
    property IncludeBOM: Boolean;
    property TableClass: WideString;
  end;
      
TitleStelt de documenttitel in wanneer WriteDocument True is
WriteDocumentSchrijft bij true een volledig HTML-document. Bij False wordt alleen het tabelfragment geschreven
IncludeStylesBepaalt of geëxporteerde HTML gegenereerde CSS- en inline-stijlinformatie bevat
IncludeBOMBepaalt of bestands- en streamuitvoer begint met een UTF-8-BOM
TableClassVoegt een CSS-klassenaam toe aan het gegenereerde <table> -element

XLSX-verwijzingshulpfuncties

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;
      
XlsxColumnLabelConverteert een op 1 gebaseerde kolomindex naar een A1-stijl kolomlabel zoals A, Zof AA
XlsxCellRefBouwt een A1-stijl celverwijzing uit op 1 gebaseerde rij- en kolomnummers
XlsxColumnIndexConverteert een A1-stijl kolomlabel naar een op 1 gebaseerde kolomindex
XlsxParseCellRefOntleedt een enkele A1-stijl celverwijzing en retourneert rij- en kolomcoördinaten
XlsxParseRangeRefOntleedt een rechthoekig A1-stijl bereik en retourneert inclusieve op 1 gebaseerde grenzen

XLSX-XML-escapehulpfuncties

function XlsxEscapeText(const Value: WideString): WideString;
function XlsxEscapeAttr(const Value: WideString): WideString;
      
XlsxEscapeText escapt de inhoud van XML-tekstknooppunten, terwijl XlsxEscapeAttr XML-attribuutwaarden escapt en attribuut-whitespace behoudt die Excel precies moet kunnen teruglezen.

Voorbeeld

De geavanceerde XLSX-members die in dit helpbestand worden beschreven, geven de volgende platte types door en retourneren die, gedeclareerd in 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 accepteren TXLSXFindOptions (hoofdlettergevoelig, hele cel, formules doorzoeken, jokertekens, achterwaarts, per kolom) en ReplaceText neemt een TXLSXReplaceEvent waarvan het resultaat per match raReplace, raSkipof raAbort kiest, met een beschrijfbare ANewText voor vervanging per cel
Progress and savingTXLSXWorkbook.OnProgress / OnProgressEx leveren TXLSXProgressPhase en (uitgebreide vorm) TXLSXProgressState met een Abort -vlag; RecalcBeforeSave is een TXLSXRecalcMode die handmatige, alleen-dirty of altijd-herberekening vóór serialisatie kiest; OnPassword is een TXLSXPasswordEvent dat open- en schrijfwachtwoorden levert
Custom propertiesTXLSXWorkbook.CustomProperties is een TXLSXCustomProperties -collectie met getypeerde makers AddText / AddNumber / AddDate / AddBoolean , plus FindByName, Delete, Clearen enumeratie via Count en Items ; elke TXLSXCustomProperty tagt zijn waarde met een TXLSXCustomPropType die past bij de ECMA-376-variantmapping
Style overlaysTXLSXStyleOverlays beheert overrides per bereik bovenop opgeslagen stijlen: Add maakt er één aan, ApplyToCell maakt één cel opnieuw op, Resolve, ResolveRowDefaulten ResolveColumnDefault beantwoorden stijlopzoekingen tijdens het laden, HasVirtualStyle rapporteert gegenereerde stijlen, MaxVirtualRow begrenst virtuele rijen, ApplyStructuralEdit verschuift overlays na rij- of kolombewerkingen, en Clear, Counten Items beheren de collectie
Styles, fills, and overlaysTXLSXFill stelt Pattern, GradientKinden GradientStops bloot via TXLSXFillPattern, TXLSXGradientKinden TXLSXGradientStop; TXLSXWorksheet.StyleOverlays is een TXLSXStyleOverlays -collectie waarvan de TXLSXStyleOverlay -entries een rechthoek, de betrokken opmaakonderdelen en de overrulende celstijl dragen
Tables, sorts, and linksAangepaste tabelstijlen (TXLSXWorkbook.CustomTableStyles) bouwen sectie-opmaak uit TXLSXTableStyleSectionKind -slots: de collectie biedt Add, FindByName, Delete, Clear, Counten Items, terwijl elke TXLSXCustomTableStyle exposes Name, SectionSize, PivotStyleen TableStyleFlag blootlegt en HasSection / ResolveSection -opzoekingen beantwoordt; sorteercondities classificeren sleutels met TXLSXSortBy en tekstvolgorde met TXLSXSortMethod; TXLSXExternalLink.Kind is een TXLSXExternalLinkKind en elke koppeling somt TXLSXExternalDefinedName -entries op met Name en RefersTo
Custom XML partsTXLSXWorkbook.CustomXmlParts bewaart itemspecifieke aangepaste XML: Add, Deleteen Clear beheren de parts, elke TXLSXCustomXmlPart draagt zijn payload in Xml plus een ItemId en een SchemaRefs -stringlijst met schemarelacies (AddSchemaRef voegt toe), en bewaarde parts doorlopen save ongewijzigd
Cell style payloadsTXLSXCellStylePayload is een deelbare immutabele stijlbundel die aan individuele cellen hangt: Acquire / Release beheren de referentieteller, Clone kopieert hem, IsDefault test de standaardstijl, en InternKey identificeert gelijke payloads zodat de opslag ze kan ontdubbelen
Controls, drawings, and sparklinesTXLSXWorksheet.FormControls is een TXLSXFormControls -collectie van TXLSXFormControl -objecten — elk stelt ControlType, Caption, MacroName, LinkedCellen zijn Items -lijst bloot — getypeerd door TXLSXFormControlType, met TXLSXFormControlItems dat itemtekst per besturingselement bewaart; tekenobjecten rapporteren hun soort via TXLSDrawingObjectKind, en sparkline-groepen stellen asschaling en gedrag voor lege cellen bloot via TXLSXSparklineAxisType en TXLSXSparklineEmptyCells
ChartsPlotgroepen en series classificeren staafgroepering, markersymbolen en posities van datalabels met de enums TXLSXChartBarGrouping, TXLSXChartMarkerSymbolen TXLSXChartDataLabelPos ; de grafiekmodelknopen delen de basisklasse TXLSXChartMutable , en TXLSXChartLayoutResolver.ResolveChart vult een TXLSXChartResolvedLayout met TXLSXChartLayoutRect -rechthoeken voor grafiek, titel, legenda, plot en astitels
Pagination keep blocksKeepRowsTogether / KeepColumnsTogether op het XLSX-pagineringsoppervlak beheren de records TXLSXKeepTogetherRange en TXLSXKeepTogetherCols , zodat paginabreukplanning een blok op één pagina houdt
DiagnosticsTXLSXWorksheet.CheckDataValidations geeft TXLSXValidationIssue -records terug (cel, validatie-index, reden); TXLSXWorkbook.ScanUnknownFunctions geeft TXLSXUnknownFunctionInfo -records terug die niet-geïmplementeerde aanroepen in cellen en gedefinieerde namen lokaliseren; TXLSXCells.GetStorageStatistics vult een TXLSXCellStorageStatistics -record met cel-, rijblok-, per-payload-byte- en styled-blank-boekhouding; TXLSXWorksheet.BuildRowMajorCellOrder geeft een TXLSXRowMajorOrder terug die de in-memory traversatievolgorde van gevulde cellen beschrijft
TXLSXWorkbook.FormulaLocale leest of schrijft de locale-tag die wordt gebruikt bij het parsen en serialiseren van formules, spiegelbeeld van de formule-locale-afhandeling van de klassieke werkmap

Table slicers

Table slicers (Excel 2013+) worden weggeschreven en geïnspecteerd via twee collecties: TXLSXWorksheet.Slicers bevat de slicer-views per werkblad (TXLSXSlicer) en TXLSXWorkbook.SlicerCaches bevat de gedeelde gegevensbronnen (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) bouwt een slicer end-to-end op: het registreert of hergebruikt de onderliggende cache met naam Slicer_<column>, reserveert de bijbehorende gedefinieerde naam #N/A , schrijft de werkbladextensie slicerList en verankert de view met een markup-compatibel tekenanker waarvan de fallback-melding oudere Excel-versies dekt; de tweede overload pin de viewrechthoek vast, anders wordt een standaardanker rechts van de tabel gebruikt

Geladen views en caches worden bij het openen opnieuw geparseerd, gedeelde caches worden hergebruikt over views heen, en het verwijderen van de laatste view van een cache laat de cache vallen; onbekende attributen en extensies behouden hun oorspronkelijke representatie, terwijl tabelbindingen opgeslagen table-ids volgen en ondersteunde Pivot-verbindingen opgeslagen bladidentiteiten volgen

Ondersteunde geïmporteerde niet-OLAP Pivot-caches leggen getypeerde ledeninspectie en bewaakte selectiewijzigingen bloot via IsNonOlapPivot, ItemCount, ItemCacheIndex, ItemSelected, SetSelectedItems en ClearSelection; zie Pivot Slicer-selectie voor gedeeld viewgedrag, faalatomiciteit en de grens van het geïmporteerde same-field-masker

Niet-ondersteunde Pivot-caches behouden hun oorspronkelijke bytes; een geladen slicer-view is ook bereikbaar als tekenobject via TXLSXDrawingObject.Slicer

Example

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;
    

Zie werkmapinfrastructuur-API voor I/O-callbacks, serializer-stijlpools, verificatie van versleutelde bestanden en contracten voor de werkruimte-afhankelijkheidsgrafiek