HotXLS-dokumentation

Ytterligare XLSX-facadens API-medlemmar

Den här sidan täcker mindre offentliga API-medlemmar som deklareras av lxHandleX, inklusive HTML-exportalternativ och hjälpfunktioner för anropare som arbetar direkt med XLSX-cellreferenser eller XML-payloadtext

Minnesgräns för formelarrayer

property FormulaArrayMemoryLimit: Int64;
      
Begränsar nyttolasten som allokeras av genererade formelarrayer som MUNIT, är som standard 64 MiB, gäller parallella omberäkningsworkers och avgränsar värden under ett Double -element

HTML-exportalternativ

type
  TXLSXHtmlExportOptions = class
    constructor Create;
    property Title: WideString;
    property WriteDocument: Boolean;
    property IncludeStyles: Boolean;
    property IncludeBOM: Boolean;
    property TableClass: WideString;
  end;
      
TitleAnger dokumentets titel när WriteDocument är True
WriteDocumentNär True skrivs ett komplett HTML-dokument. När False skrivs endast tabellfragmentet
IncludeStylesStyr om exporterad HTML inkluderar genererad CSS och inline-stilinformation
IncludeBOMStyr om fil- och strömutdata börjar med en UTF-8-BOM
TableClassLägger till ett CSS-klassnamn på det genererade <table> -elementet

XLSX-hjälpfunktioner för referenser

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;
      
XlsxColumnLabelKonverterar ett 1-baserat kolumnindex till en A1-stils kolumnetikett, såsom A, Zeller AA
XlsxCellRefBygger en A1-stils cellreferens från 1-baserade rad- och kolumnnummer
XlsxColumnIndexKonverterar en A1-stils kolumnetikett till ett 1-baserat kolumnindex
XlsxParseCellRefTolkar en enskild A1-stils cellreferens och returnerar rad- och kolumnkoordinater
XlsxParseRangeRefTolkar ett rektangulärt A1-stils område och returnerar inkluderande 1-baserade gränser

XLSX XML-hjälpfunktioner för escaping

function XlsxEscapeText(const Value: WideString): WideString;
function XlsxEscapeAttr(const Value: WideString): WideString;
      
XlsxEscapeText gör XML-textnodsinnehåll säkert, medan XlsxEscapeAttr gör XML-attributvärden säkra och bevarar attributets mellanslag som Excel måste läsa tillbaka exakt

Stöddtyper för avancerade XLSX-medlemmar

De avancerade XLSX-medlemmar som dokumenteras i den här hjälpfilen skickar och returnerar följande enkla typer, deklarerade i 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 accepterar TXLSXFindOptions (matcha versaler/gemener, hela cellen, sök formler, jokertecken, bakåt, efter kolumner) och ReplaceText tar en TXLSXReplaceEvent vars resultat väljer raReplace, raSkipeller raAbort per träff, med en skrivbar ANewText för ersättningar per cell
Progress and savingTXLSXWorkbook.OnProgress / OnProgressEx levererar TXLSXProgressPhase och (utökad form) TXLSXProgressState med en Abort -flagga; RecalcBeforeSave är en TXLSXRecalcMode som väljer manuell, endast smutsiga eller alltid-omberäkning före serialisering; OnPassword är en TXLSXPasswordEvent som levererar öppnings- och skrivlösenord
Custom propertiesTXLSXWorkbook.CustomProperties är en samling TXLSXCustomProperties med typade skapare AddText / AddNumber / AddDate / AddBoolean , FindByName, Deleteoch Clear, plus Count - och Items -uppräkning; varje TXLSXCustomProperty märker sitt värde med en TXLSXCustomPropType som matchar ECMA-376-variantmappningen
Style overlaysTXLSXStyleOverlays hanterar åsidosättningar per område ovanpå lagrade stilar: Add skapar en, ApplyToCell omstilar en enskild cell, Resolve, ResolveRowDefaultoch ResolveColumnDefault svarar på stiluppslagningar vid inläsning, HasVirtualStyle rapporterar genererade stilar, MaxVirtualRow avgränsar virtuella rader, ApplyStructuralEdit skiftar överlägg efter rad- eller kolumnredigeringar, och Clear, Countoch Items underhåller samlingen
Styles, fills, and overlaysTXLSXFill exponerar Pattern, GradientKindoch GradientStops via TXLSXFillPattern, TXLSXGradientKindoch TXLSXGradientStop; TXLSXWorksheet.StyleOverlays är en samling TXLSXStyleOverlays vars TXLSXStyleOverlay -poster bär en rektangel, de berörda formatdelarna och den åsidosättande cellstilen
Tables, sorts, and linksAnpassade tabellstilar (TXLSXWorkbook.CustomTableStyles) bygger sektionsformatering från TXLSXTableStyleSectionKind -platser: samlingen erbjuder Add, FindByName, Delete, Clear, Countoch Items, medan varje TXLSXCustomTableStyle exponerar Name, SectionSize, PivotStyleoch TableStyleFlag och svarar på HasSection / ResolveSection -uppslag; sorteringsvillkor klassificerar nycklar med TXLSXSortBy och textordning med TXLSXSortMethod; TXLSXExternalLink.Kind är en TXLSXExternalLinkKind och varje länk listar TXLSXExternalDefinedName -poster med Name och RefersTo
Custom XML partsTXLSXWorkbook.CustomXmlParts bevarar objektspecifik anpassad XML: Add, Deleteoch Clear underhåller delarna, varje TXLSXCustomXmlPart bär sin nyttolast i Xml plus en ItemId och en SchemaRefs -stränglista med schemarelationer (AddSchemaRef lägger till), och bevarade delar går orörda genom sparningen
Cell style payloadsTXLSXCellStylePayload är ett delbart oföränderligt stilpaket som fästs vid enskilda celler: Acquire / Release hanterar dess referensräknare, Clone kopierar det, IsDefault testar standardstilen, och InternKey identifierar lika nyttolaster så att lagringen kan deduplicera dem
Controls, drawings, and sparklinesTXLSXWorksheet.FormControls är en samling TXLSXFormControls med TXLSXFormControl -objekt — varje objekt exponerar ControlType, Caption, MacroName, LinkedCelloch sin Items -lista — typade av TXLSXFormControlType, med TXLSXFormControlItems som bär objekttext per kontroll; ritobjekt rapporterar sin typ via TXLSDrawingObjectKind, och sparkline-grupper exponerar axelskalning och beteende för tomma celler via TXLSXSparklineAxisType och TXLSXSparklineEmptyCells
ChartsPlotgrupper och serier klassificerar stapelgruppering, markersymboler och positioner för dataetiketter med uppräkningarna TXLSXChartBarGrouping, TXLSXChartMarkerSymboloch TXLSXChartDataLabelPos ; diagrammodellens noder delar basklassen TXLSXChartMutable , och TXLSXChartLayoutResolver.ResolveChart fyller en TXLSXChartResolvedLayout av TXLSXChartLayoutRect -rektanglar för diagram, titel, diagramförklaring, plot och axeltitlar
Pagination keep blocksKeepRowsTogether / KeepColumnsTogether på XLSX-pagineringsytan underhåller posterna TXLSXKeepTogetherRange och TXLSXKeepTogetherCols så att planeringen av sidbrytningar håller ett block på en sida
DiagnosticsTXLSXWorksheet.CheckDataValidations returnerar TXLSXValidationIssue -poster (cell, valideringsindex, orsak); TXLSXWorkbook.ScanUnknownFunctions returnerar TXLSXUnknownFunctionInfo -poster som lokaliserar oimplementerade anrop i celler och definierade namn; TXLSXCells.GetStorageStatistics fyller en post TXLSXCellStorageStatistics med redovisning av celler, radblock, byte per nyttolast och formaterade tomma celler; TXLSXWorksheet.BuildRowMajorCellOrder returnerar en TXLSXRowMajorOrder som beskriver den interna traverseringsordningen för ifyllda celler
TXLSXWorkbook.FormulaLocale läser eller skriver språktaggen som används vid tolkning och serialisering av formler, i linje med den klassiska arbetsbokens hantering av formelspråk

Tabellslicers

Tabellslicers (Excel 2013+) skrivs och granskas via två samlingar: TXLSXWorksheet.Slicers håller slicervyerna per blad (TXLSXSlicer) och TXLSXWorkbook.SlicerCaches håller de delade datakällorna (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) bygger en slicer från grunden: den registrerar eller återanvänder bakgrundscachen med namnet Slicer_<column>, reserverar det matchande definierade namnet #N/A , skriver kalkylbladets slicerList -tillägg och förankrar vyn med ett markupkompatibelt ritankare vars reservmeddelande täcker äldre Excel-versioner; den andra överlagringen fäster visningsrektangeln, annars används ett standardankare till höger om tabellen

Inlästa vyer och cacher tolkas tillbaka vid öppning, delade cacher återanvänds över vyer, och att ta bort en cachs sista vy släpper cachen; okända attribut och tillägg behåller sin ursprungliga representation, medan tabellbindningar spårar sparade tabell-id:n och stödda pivotanslutningar spårar sparade bladidentiteter

Stödda importerade icke-OLAP-pivotcacher exponerar typad medlemsinspektion och bevakade selektionsändringar via IsNonOlapPivot, ItemCount, ItemCacheIndex, ItemSelected, SetSelectedItemsoch ClearSelection; se Pivot Slicer-selektion för beteendet hos delade vyer, atomära fel och gränsen för den importerade samma-fält-masken

Pivotcacher som inte stöds behåller sina ursprungliga byte; en inläst slicervy nås också som ritobjekt via TXLSXDrawingObject.Slicer

Exempel

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;
    

Se arbetsbokens infrastruktur-API för I/O-återanrop, stilpooler i serialiseraren, verifiering av krypterade filer och kontrakt för arbetsplatsens beroendegraf