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
property FormulaArrayMemoryLimit: Int64;
MUNIT, má výchozích 64 MiB, vztahuje se na paralelní recalculation workery a hodnoty pod jedním elementem Double ořízne
type
TXLSXHtmlExportOptions = class
constructor Create;
property Title: WideString;
property WriteDocument: Boolean;
property IncludeStyles: Boolean;
property IncludeBOM: Boolean;
property TableClass: WideString;
end;
| Title | Nastaví název dokumentu, když je WriteDocument True |
| WriteDocument | Když 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 |
| TableClass | Přidá název CSS třídy k vygenerovanému prvku <table> element |
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 | Převede 1-based index sloupce na označení sloupce ve stylu A1, například A, Znebo AA |
| XlsxCellRef | Sestaví odkaz na buňku ve stylu A1 z 1-based čísel řádku a sloupce |
| XlsxColumnIndex | Převede označení sloupce ve stylu A1 na 1-based index sloupce |
| XlsxParseCellRef | Rozparsuje jediný odkaz na buňku ve stylu A1 a vrátí souřadnice řádku a sloupce |
| XlsxParseRangeRef | Rozparsuje obdélníkový rozsah ve stylu A1 a vrátí inkluzivní 1-based meze |
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ě
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 replace | TXLSXWorksheet.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 saving | TXLSXWorkbook.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 properties | TXLSXWorkbook.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 overlays | TXLSXStyleOverlays 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 overlays | TXLSXFill 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 links | Vlastní 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 parts | TXLSXWorkbook.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 payloads | TXLSXCellStylePayload 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 sparklines | TXLSXWorksheet.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 |
| Charts | Plot 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 blocks | KeepRowsTogether / 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 |
| Diagnostics | TXLSXWorksheet.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šituTable 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
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