Dokumentace HotXLS

Další členy API fasády XLSX

Tato stránka zahrnuje menší veřejné členy API deklarované lxHandleX, včetně možností exportu HTML a pomocných funkcí pro volající, kteří pracují přímo s referencemi buněk XLSX nebo XML payloady

Paměťový limit pro pole ve vzorcích

property FormulaArrayMemoryLimit: Int64;
      
Ohraničí payload alokovaný generovanými poli ve vzorcích, jako je MUNIT, má výchozích 64 MiB, vztahuje se na paralelní recalculation workery a hodnoty pod jedním elementem Double ořízne

Možnosti exportu HTML

type
  TXLSXHtmlExportOptions = class
    constructor Create;
    property Title: WideString;
    property WriteDocument: Boolean;
    property IncludeStyles: Boolean;
    property IncludeBOM: Boolean;
    property TableClass: WideString;
  end;
      
TitleNastaví název dokumentu, když je WriteDocument True
WriteDocumentKdyž je True, zapíše celý HTML dokument. Když je False, zapíše pouze fragment tabulky
IncludeStylesŘídí, zda exportovaný HTML obsahuje generované CSS a vložené informace o stylu
IncludeBOMŘídí, zda výstup do souboru a proudu začíná UTF-8 BOM
TableClassPřidá název CSS třídy k vygenerovanému prvku <table> element

Pomocné funkce referencí 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;
      
XlsxColumnLabelPřevede 1-based index sloupce na označení sloupce ve stylu A1, například A, Znebo AA
XlsxCellRefSestaví odkaz na buňku ve stylu A1 z 1-based čísel řádku a sloupce
XlsxColumnIndexPřevede označení sloupce ve stylu A1 na 1-based index sloupce
XlsxParseCellRefRozparsuje jediný odkaz na buňku ve stylu A1 a vrátí souřadnice řádku a sloupce
XlsxParseRangeRefRozparsuje obdélníkový rozsah ve stylu A1 a vrátí inkluzivní 1-based meze

Pomocné funkce XML escapování pro XLSX

function XlsxEscapeText(const Value: WideString): WideString;
function XlsxEscapeAttr(const Value: WideString): WideString;
      
XlsxEscapeText escapuje obsah textových uzlů XML, zatímco XlsxEscapeAttr escapuje hodnoty atributů XML a zachovává mezery atributů, které musí Excel přečíst přesně

Podpůrné typy pro pokročilé členy XLSX

Pokročilí členové XLSX dokumentovaní v této nápovědě předávají a vracejí následující prosté typy deklarované v 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 přijímají TXLSXFindOptions (match case, whole cell, search formulas, wildcards, backward, by columns) a ReplaceText bere TXLSXReplaceEvent , jehož výsledek vybírá raReplace, raSkipnebo raAbort pro každou shodu, s zapisovatelným ANewText pro náhrady na úrovni buněk
Progress and savingTXLSXWorkbook.OnProgress / OnProgressEx doručují TXLSXProgressPhase a (rozšířená forma) TXLSXProgressState s příznakem Abort ; RecalcBeforeSave je TXLSXRecalcMode vybírající ruční, jen-při-změně nebo vždy-recalculate před serializací; OnPassword je TXLSXPasswordEvent dodávající hesla pro otevření i zápis
Custom propertiesTXLSXWorkbook.CustomProperties je kolekce TXLSXCustomProperties s typovanými tvůrci AddText / AddNumber / AddDate / AddBoolean , dále FindByName, Deletea Clearplus enumerace Count a Items ; každá TXLSXCustomProperty označí svou hodnotu TXLSXCustomPropType odpovídajícím mapováním variant ECMA-376
Style overlaysTXLSXStyleOverlays spravuje overridey po rozsazích nad uloženými styly: Add jeden vytvoří, ApplyToCell přestyuje jedinou buňku, Resolve, ResolveRowDefaulta ResolveColumnDefault odpovídají na dotazy stylů při načítání, HasVirtualStyle hlásí generované styly, MaxVirtualRow ohraničuje virtuální řádky, ApplyStructuralEdit posune overlaye po úpravách řádků či sloupců a Clear, Counta Items spravují kolekci
Styles, fills, and overlaysTXLSXFill zpřístupňuje Pattern, GradientKinda GradientStops přes TXLSXFillPattern, TXLSXGradientKinda TXLSXGradientStop; TXLSXWorksheet.StyleOverlays je kolekce TXLSXStyleOverlays , jejíž položky TXLSXStyleOverlay nesou obdélník, dotčené části formátu a přepisující styl buňky
Tables, sorts, and linksVlastní styly tabulek (TXLSXWorkbook.CustomTableStyles) staví formátování sekcí ze slotů TXLSXTableStyleSectionKind : kolekce nabízí Add, FindByName, Delete, Clear, Counta Items, zatímco každý TXLSXCustomTableStyle zpřístupňuje Name, SectionSize, PivotStylea TableStyleFlag a odpovídá na dotazy HasSection / ResolveSection ; sort podmínky klasifikují klíče přes TXLSXSortBy a řazení textu přes TXLSXSortMethod; TXLSXExternalLink.Kind je TXLSXExternalLinkKind a každý odkaz eviduje položky TXLSXExternalDefinedName s Name a RefersTo
Custom XML partsTXLSXWorkbook.CustomXmlParts zachovává vlastní XML specifické pro položku: Add, Deletea Clear spravují části, každá TXLSXCustomXmlPart nese svůj payload v Xml plus ItemId a string list SchemaRefs relací schémat (AddSchemaRef přidává) a zachované části projdou ukládáním beze změny
Cell style payloadsTXLSXCellStylePayload je sdílitelný neměnný bundle stylů připojovaný k jednotlivým buňkám: Acquire / Release spravují jeho referenční počet, Clone jej kopíruje, IsDefault testuje výchozí styl a InternKey identifikuje rovnocenné payloady, aby je úložiště mohlo deduplikovat
Controls, drawings, and sparklinesTXLSXWorksheet.FormControls je kolekce TXLSXFormControls objektů TXLSXFormControl — každý zpřístupňuje ControlType, Caption, MacroName, LinkedCella svůj seznam Items — typovaných přes TXLSXFormControlType, přičemž TXLSXFormControlItems drží text položek per-control; kreslicí objekty hlásí svůj druh přes TXLSDrawingObjectKinda skupiny sparkline zpřístupňují škálování os a chování prázdných buněk přes TXLSXSparklineAxisType a TXLSXSparklineEmptyCells
ChartsPlot skupiny a řady klasifikují bar grouping, symboly markerů a pozice datových popisků enumy TXLSXChartBarGrouping, TXLSXChartMarkerSymbola TXLSXChartDataLabelPos ; uzly modelu grafu sdílejí základní třídu TXLSXChartMutable a TXLSXChartLayoutResolver.ResolveChart vyplní TXLSXChartResolvedLayout z obdélníků TXLSXChartLayoutRect pro graf, název, legendu, plot a názvy os
Pagination keep blocksKeepRowsTogether / KeepColumnsTogether na stránkovací ploše XLSX udržují záznamy TXLSXKeepTogetherRange a TXLSXKeepTogetherCols , aby plánování konců stránek udrželo blok na jedné stránce
DiagnosticsTXLSXWorksheet.CheckDataValidations vrací záznamy TXLSXValidationIssue (buňka, index ověřování, důvod); TXLSXWorkbook.ScanUnknownFunctions vrací záznamy TXLSXUnknownFunctionInfo lokalizující neimplementovaná volání v buňkách a definovaných názvech; TXLSXCells.GetStorageStatistics vyplní záznam TXLSXCellStorageStatistics s účtováním buněk, bloků řádků, bajtů per-payload a styled-blank; TXLSXWorksheet.BuildRowMajorCellOrder vrací TXLSXRowMajorOrder popisující pořadí průchodu zaplněnými buňkami v paměti
TXLSXWorkbook.FormulaLocale čte či zapisuje locale tag používaný při parsování a serializaci vzorců, zrcadlící zacházení s locale vzorců v classic sešitu

Table slicery

Table slicery (Excel 2013+) se zapisují a inspectují přes dvě kolekce: TXLSXWorksheet.Slicers drží slicer pohledy per list (TXLSXSlicer) a TXLSXWorkbook.SlicerCaches drží sdílené datové zdroje (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) postaví slicer od začátku do konce: zaregistruje či znovu použije podpůrnou cache pojmenovanou Slicer_<column>, rezervuje odpovídající definovaný název #N/A , zapíše rozšíření slicerList listu a ukotví pohled kreslicím anchory s markup-compatibility, jehož fallback upozornění pokrývá starší verze Excelu; druhý overload přichytí obdélník pohledu, jinak se použije výchozí anchor vpravo od tabulky

Načtené pohledy i cache se při otevření znovu parsejí, sdílené cache se znovu používají napříč pohledy a smazání posledního pohledu cache zahodí cache; nerozpoznané atributy a rozšíření si zachovávají původní reprezentaci, vazby na tabulky sledují uložená table id a podporované Pivot připojení sledují uložené identity listů

Podporované importované ne-OLAP Pivot cache zpřístupňují typovanou inspekci členů a střežené změny výběru přes IsNonOlapPivot, ItemCount, ItemCacheIndex, ItemSelected, SetSelectedItems a ClearSelection; chování sdílených pohledů, atomicitu při selhání a hranici masky importovaného téhož pole popisuje výběr Pivot Sliceru

Nepodporované Pivot cache si zachovávají původní bajty; slicer pohled načtený ze souboru je dostupný i jako kreslicí objekt přes TXLSXDrawingObject.Slicer

Příklad

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;
    

Viz API infrastruktury sešitu ohledně I/O callbacků, style poolů serializátoru, ověření šifrovaných souborů a smluv grafu závislostí workspace