lxHandleX宣告的較小型公開 API 成員,包括 HTML 匯出選項,以及給直接處理 XLSX 儲存格參照或 XML 承載文字的呼叫端使用的輔助函式
property FormulaArrayMemoryLimit: Int64;
MUNIT這類產生公式陣列所配置的承載大小,預設 64 MiB,適用於平行重算 worker,並把低於一個 Double 元素的值限縮掉
type
TXLSXHtmlExportOptions = class
constructor Create;
property Title: WideString;
property WriteDocument: Boolean;
property IncludeStyles: Boolean;
property IncludeBOM: Boolean;
property TableClass: WideString;
end;
| Title | Sets the document title when WriteDocument 為 True 時設定文件標題 |
| WriteDocument | True 時寫出完整 HTML 文件;False 時只寫出表格片段 |
| IncludeStyles | 控制匯出的 HTML 是否包含產生的 CSS 與內嵌樣式資訊 |
| IncludeBOM | 控制檔案與串流輸出是否以 UTF-8 BOM 開頭 |
| TableClass | 在產生的 <table> 元素上加一個 CSS 類別名稱 |
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 | 把 1 起始的欄索引轉成 A1 樣式的欄標籤,例如 A、 Z或 AA |
| XlsxCellRef | 由 1 起始的列號與欄號組出 A1 樣式的儲存格參照 |
| XlsxColumnIndex | 把 A1 樣式的欄標籤轉成 1 起始的欄索引 |
| XlsxParseCellRef | 剖析單一 A1 樣式儲存格參照,並回傳列與欄座標 |
| XlsxParseRangeRef | 剖析矩形的 A1 樣式範圍,回傳含兩端的 1 起始邊界 |
function XlsxEscapeText(const Value: WideString): WideString;
function XlsxEscapeAttr(const Value: WideString): WideString;
XlsxEscapeText 逸出 XML 文字節點的內容; XlsxEscapeAttr 逸出 XML 屬性值,並保留 Excel 必須精確讀回的屬性空白
本說明文件各處記載的進階 XLSX 成員,傳遞與回傳下列在 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 接受 TXLSXFindOptions (區分大小寫、整格比對、搜尋公式、萬用字元、反向、依欄), ReplaceText 則接收一個 TXLSXReplaceEvent ,其結果對每一筆命中選擇 raReplace、 raSkip或 raAbort ,並提供可寫入的 ANewText 做逐格替換 |
| Progress and saving | TXLSXWorkbook.OnProgress / OnProgressEx 傳送 TXLSXProgressPhase 與(擴充形式)帶 TXLSXProgressState 旗標的 Abort ; RecalcBeforeSave 是一個 TXLSXRecalcMode ,選擇序列化前手動、僅重算有異動,或一律重算; OnPassword 是一個 TXLSXPasswordEvent ,提供開啟與寫入密碼 |
| Custom properties | TXLSXWorkbook.CustomProperties 是一個 TXLSXCustomProperties 集合,提供具型別的 AddText / AddNumber / AddDate / AddBoolean 建立器、 FindByName、 Delete與 Clear,外加 Count 與 Items 列舉;每個 TXLSXCustomProperty 都以對應 ECMA-376 variant 映射的 TXLSXCustomPropType 標記其值 |
| Style overlays | TXLSXStyleOverlays 管理已儲存樣式之上的逐範圍覆寫: Add 建立一個, ApplyToCell 重新設定單一儲存格的樣式, Resolve、 ResolveRowDefault與 ResolveColumnDefault 在載入期間回答樣式查詢, HasVirtualStyle 回報是否有產生樣式, MaxVirtualRow 限制虛擬列, ApplyStructuralEdit 在列欄編輯後位移疊加層, Clear、 Count與 Items 則維護集合 |
| Styles, fills, and overlays | TXLSXFill 透過 Pattern、 GradientKind與 GradientStops 暴露 TXLSXFillPattern、 TXLSXGradientKind與 TXLSXGradientStop; TXLSXWorksheet.StyleOverlays 是一個 TXLSXStyleOverlays 集合,其 TXLSXStyleOverlay 條目攜帶一個矩形、受影響的格式部分,以及覆寫用的儲存格樣式 |
| Tables, sorts, and links | 自訂表格樣式(TXLSXWorkbook.CustomTableStyles)以 TXLSXTableStyleSectionKind 槽位建構各區段的格式:集合提供 Add、 FindByName、 Delete、 Clear、 Count與 Items,每個 TXLSXCustomTableStyle 暴露 Name、 SectionSize、 PivotStyle與 TableStyleFlag ,並回答 HasSection / ResolveSection 查詢;排序條件以 TXLSXSortBy 分類關鍵欄、以 TXLSXSortMethod決定文字排序; TXLSXExternalLink.Kind 是一個 TXLSXExternalLinkKind ,每條連結列出帶 TXLSXExternalDefinedName 與 Name 的 RefersTo |
| Custom XML parts | TXLSXWorkbook.CustomXmlParts 保留項目專屬的自訂 XML: Add、 Delete與 Clear 維護這些 part,每個 TXLSXCustomXmlPart 把承載放在 Xml ,另帶一個 ItemId 與存放結構描述關聯的 SchemaRefs 字串清單(AddSchemaRef 可附加),被保留的 part 儲存時原樣往返 |
| Cell style payloads | TXLSXCellStylePayload 是可共用、不可變的樣式組合,掛在個別儲存格上: Acquire / Release 管理參照計數, Clone 複製一份, IsDefault 測試是否為預設樣式, InternKey 識別相等的承載,讓儲存端可以把它們去重 |
| Controls, drawings, and sparklines | TXLSXWorksheet.FormControls 是一個 TXLSXFormControls 集合,裝著 TXLSXFormControl 物件 —— 每個物件暴露 ControlType、 Caption、 MacroName、 LinkedCell與它的 Items 清單 —— 以 TXLSXFormControlType分型, TXLSXFormControlItems 保存每個控制項的項目文字;繪圖物件透過 TXLSDrawingObjectKind回報種類,走勢圖群組則以 TXLSXSparklineAxisType 與 TXLSXSparklineEmptyCells |
| Charts | 繪圖群組與數列以 TXLSXChartBarGrouping、 TXLSXChartMarkerSymbol與 TXLSXChartDataLabelPos 列舉,分類橫條分組、標記符號與資料標籤位置;圖表模型節點共用 TXLSXChartMutable 基底類別, TXLSXChartLayoutResolver.ResolveChart 會填入一個由 TXLSXChartResolvedLayout 矩形組成的 TXLSXChartLayoutRect ,涵蓋圖表、標題、圖例、繪圖區與各座標軸標題 |
| Pagination keep blocks | KeepRowsTogether / KeepColumnsTogether 維護 TXLSXKeepTogetherRange 與 TXLSXKeepTogetherCols 記錄,讓分頁規劃把一個區塊留在同一頁 |
| Diagnostics | TXLSXWorksheet.CheckDataValidations 回傳 TXLSXValidationIssue 記錄(儲存格、驗證索引、原因); TXLSXWorkbook.ScanUnknownFunctions 回傳 TXLSXUnknownFunctionInfo 記錄,定位儲存格與定義名稱中未實作的呼叫; TXLSXCells.GetStorageStatistics 填入 TXLSXCellStorageStatistics 記錄,統計儲存格、列區塊、每種承載的位元組數與帶樣式空白格; TXLSXWorksheet.BuildRowMajorCellOrder 回傳一個 TXLSXRowMajorOrder ,描述已填儲存格在記憶體中的走訪順序 |
TXLSXWorkbook.FormulaLocale 讀寫剖析與序列化公式時使用的語系標籤,對應傳統活頁簿的公式語系處理表格交叉分析篩選器(slicer,Excel 2013+)透過兩個集合寫入與檢查: TXLSXWorksheet.Slicers 保存每張工作表的篩選器檢視(TXLSXSlicer), TXLSXWorkbook.SlicerCaches 保存共用的資料來源(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) 端到端建立一個篩選器:註冊或重用名為 Slicer_<column>的後備快取、保留對應的 #N/A 定義名稱、寫入工作表的 slicerList 擴充,並用一個標記相容性的繪圖錨點固定檢視,其後備提示可涵蓋較舊的 Excel 版本;第二個多載可指定檢視矩形,否則使用表格右側的預設錨點
載入的檢視與快取在開啟時重新剖析,共用快取跨檢視重用,刪除某個快取的最後一個檢視會連快取一起丟掉;無法識別的屬性與擴充保留其原始表示,而表格繫結會追蹤儲存後的表格 id,受支援的樞紐連接則追蹤儲存後的工作表身分
受支援的匯入非 OLAP 樞紐快取透過 IsNonOlapPivot、 ItemCount、 ItemCacheIndex、 ItemSelected、 SetSelectedItems與 ClearSelection 公開具型別的成員檢查與受防護的選取變更;共用檢視行為、失敗原子性與匯入同欄位遮罩界限請見樞紐分析 Slicer 選取
不受支援的樞紐快取保留其原始位元組;從檔案載入的 Slicer 檢視,也可以透過 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;
I/O 回呼、序列化器樣式集區、加密檔案驗證與工作區相依圖合約,請見活頁簿基礎結構 API