.xlsx)工作簿的顶层容器,声明于
lxHandleX。它持有一个 TXLSXSheets
集合,并为 OOXML 工作簿、CSV / TSV 导入以及 OpenDocument Spreadsheet
( SaveAs )读写流程提供 Open /.ods入口点
type
TXLSXFileFormat = (xlsxOpenXMLWorkbook, xlsxOpenDocumentSpreadsheet,
xlsxOpenXMLTemplate, xlsxOpenXMLMacroEnabledTemplate, xlsxExcelBinaryWorkbook);
TODSExportOptions = class
constructor Create;
property Generator: WideString;
property IncludeCharts: Boolean;
property IncludeImages: Boolean;
end;
TXLSXWorkbook = class
constructor Create;
destructor Destroy; override;
function CreateLoadedCellCursor: IXLSLoadedCellCursor; overload;
function CreateLoadedCellCursor(AIncludeStoredBlanks: Boolean): IXLSLoadedCellCursor; overload;
function CreateReadOnlyView: IXLSReadOnlyWorkbookView;
property RenderCalibration: TXLSRenderCalibration;
function CaptureRenderCalibration: TXLSRenderCalibration;
procedure ResetRenderCalibration;
function CreateRenderGeometry(ABackend: TXLSRenderGeometryBackend;
ACacheCapacity: Integer = 4096): IXLSRenderGeometry;
function SaveAs(const FileName: WideString): Integer; overload;
function SaveAs(const FileName: WideString; FileFormat: TXLSXFileFormat): Integer; overload;
function SaveAs(Stream: TStream): Integer; overload;
function SaveAs(Stream: TStream; FileFormat: TXLSXFileFormat): Integer; overload;
function GetConversionReport(ATarget: TXLSConversionTarget): TXLSConversionReport;
function SaveAsChecked(Stream: TStream; FileFormat: TXLSXFileFormat;
AllowLossy: Boolean = False): Integer; overload;
function SaveAsChecked(const FileName: WideString; FileFormat: TXLSXFileFormat;
AllowLossy: Boolean = False): Integer; overload;
function Open(const FileName: WideString): Integer; overload;
function Open(const FileName: WideString; const Password: WideString): Integer; overload;
function Open(Stream: TStream): Integer; overload;
function OpenCSV(const FileName: WideString): Integer; overload;
function OpenCSV(const FileName: WideString; ASeparator: WideChar;
ADetectTypes: Boolean): Integer; overload;
function OpenCSV(Stream: TStream): Integer; overload;
function OpenCSV(Stream: TStream; ASeparator: WideChar;
ADetectTypes: Boolean): Integer; overload;
function OpenODS(const FileName: WideString): Integer; overload;
function OpenODS(Stream: TStream): Integer; overload;
function SaveAsODS(const FileName: WideString): Integer; overload;
function SaveAsODS(Stream: TStream): Integer; overload;
function SaveAsODS(const FileName: WideString; Options: TODSExportOptions): Integer; overload;
function SaveAsODS(Stream: TStream; Options: TODSExportOptions): Integer; overload;
function GetODSSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
function GetODSSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
function GetSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
function GetSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
function SaveAsCSV(const FileName: WideString): Integer; overload;
function SaveAsCSV(const FileName: WideString; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
function SaveAsCSV(Stream: TStream): Integer; overload;
function SaveAsCSV(Stream: TStream; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
function SaveAsHTML(const FileName: WideString): Integer; overload;
function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
function SaveAsHTML(const FileName: WideString; SheetIndex: Integer): Integer; overload;
function SaveAsHTML(const FileName: WideString; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
function SaveAsHTML(Stream: TStream): Integer; overload;
function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;
function SaveAsHTML(Stream: TStream; SheetIndex: Integer): Integer; overload;
function SaveAsHTML(Stream: TStream; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
function SaveAsRTF(const FileName: WideString): Integer; overload;
function SaveAsRTF(const FileName: WideString; SheetIndex: Integer): Integer; overload;
function SaveAsRTF(Stream: TStream): Integer; overload;
function SaveAsRTF(Stream: TStream; SheetIndex: Integer): Integer; overload;
// AES encryption (ECMA-376 Standard Encryption) write path.
// OpenEncrypted still raises for encrypted packages.
function SaveAsEncrypted(const FileName, APassword: WideString): Integer;
function OpenEncrypted(const FileName, APassword: WideString): Integer;
function CanReadEncrypted(const FileName: WideString): Boolean;
function Calculate(const Formula: WideString): Variant;
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out AMismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
property OnUserFunction: TXLSUserFunctionEvent;
property OnUserFunctionEx: TXLSUserFunctionExEvent;
property AllowUnsafeFormulaCallbacks: Boolean;
// Document properties (docProps/core.xml + docProps/app.xml).
property Title, Author, Subject, Keywords, Description,
Category, LastModifiedBy, Company,
Application, AppVersion: WideString;
property Created, Modified: TDateTime;
// Workbook protection (16-bit legacy hash).
procedure ProtectWorkbook; overload;
procedure ProtectWorkbook(const APassword: WideString); overload;
procedure ProtectWorkbook(const APassword: WideString; ALockStructure, ALockWindows: Boolean); overload;
procedure UnProtectWorkbook;
property IsWorkbookProtected: Boolean;
property LockStructure, LockWindows: Boolean;
// VBA project payload (round-trips byte-for-byte). Workbook is saved
// with macro-enabled content type when HasVbaProject is True.
procedure LoadVbaProjectFromFile(const AFileName: WideString);
procedure ClearVbaProject;
function HasVbaProject: Boolean;
property VbaProjectDefined: Boolean;
property VbaProject: AnsiString;
property ParsedVBAProject: TXLSVBAProject;
// Unknown package and workbook extension preservation
procedure ClearUnsupportedParts;
function UnsupportedPartCount: Integer;
function UnsupportedPartBytes: Int64;
property PreserveUnsupportedParts: Boolean;
// Chart sheet helper — creates a sheet flagged IsChartSheet and
// seeds Charts[0] with a default full-page anchor.
function AddChartSheet(const AName: WideString;
AChartType: TXLSXChartType; const ATitle: WideString): TXLSXWorksheet;
// Streaming SaveAs path (TXLSWideStringBuilder + one sheet at a time).
property StreamingWrite: Boolean;
// Streaming parallel Open path
property ParallelParse: Boolean;
property ParallelParseThreads: Integer;
// Workbook-level collections.
property ActiveSheet: Integer;
property Minimized: Boolean;
property WindowHidden: Boolean;
property ShowHorizontalScroll: Boolean;
property ShowVerticalScroll: Boolean;
property ShowSheetTabs: Boolean;
property XWindow: Integer;
property YWindow: Integer;
property WindowWidth: Integer;
property WindowHeight: Integer;
property TabRatio: Integer;
property FirstSheet: Integer;
property AutoFilterDateGrouping: Boolean;
property Date1904: Boolean;
// Workbook calculation policy
property Iterate: Boolean;
property IterateCount: Integer;
property IterateDelta: Double;
property CalcId: Integer;
property FullCalcOnLoad: Boolean;
property CalcMode: WideString;
property RefMode: WideString;
property ForceFullCalc: Boolean;
property CalcCompleted: Boolean;
property CalcOnSave: Boolean;
property FullPrecision: Boolean;
property ConcurrentCalc: Boolean;
property ConcurrentManualCount: Integer;
function CreateWorkspaceWorkbook: IXLSWorkspaceWorkbook;
procedure RegisterExternalWorkbook(const AWorkbookName: WideString;
AWorkbook: TXLSXWorkbook);
procedure UnregisterExternalWorkbook(const AWorkbookName: WideString);
property SourceFormat: TXLSXFileFormat;
property IndexedColor[Index: Integer]: LongWord;
function NearestIndexedColor(AArgb: LongWord;
out AMatch: TXLSNearestIndexedColorMatch): Boolean;
function ScanIndexedColorUsage: TXLSIndexedColorUsageArray;
function BuildBiffPalettePlan: TXLSBiffPalettePlan;
function ApplyBiffPalettePlan(
const APlan: TXLSBiffPalettePlan): Boolean;
function HasCustomIndexedColor(Index: Integer): Boolean;
function CustomIndexedColorCount: Integer;
procedure ResetIndexedColors;
property Sheets: TXLSXSheets;
property Fonts: TXLSXFonts;
property Fills: TXLSXFills;
property Borders: TXLSXBorders;
property NumberFormats: TXLSXNumberFormats;
property Alignments: TXLSXAlignments;
property DefinedNames: TXLSXDefinedNames;
property ExternalLinks: TXLSXExternalLinks;
property ExternalWorkspace: TXLSWorkbookWorkspace;
end;
| Sheets | Worksheet collection. See TXLSXSheets |
| Fonts | 工作簿级字体调色板。单元格把 TXLSXCell.FontIndex 设为该集合中从 1 开始的索引即可选用字体。参见 TXLSXFont / TXLSXFonts |
| Fills | 工作簿级填充调色板。单元格把 TXLSXCell.FillIndex 设为该集合中从 1 开始的索引即可选用填充。参见 TXLSXFill / TXLSXFills |
| Borders | 工作簿级边框调色板。单元格把 TXLSXCell.BorderIndex 设为该集合中从 1 开始的索引即可选用边框。参见 TXLSXBorder / TXLSXBorders |
| NumberFormats | 工作簿级自定义数字格式调色板。单元格把 TXLSXCell.NumberFormatIndex 设为该集合中从 1 开始的索引即可选用格式。参见
TXLSXNumberFormat / TXLSXNumberFormats |
| DefinedNames | 工作簿级命名区域(工作簿作用域或工作表作用域)。参见 TXLSXDefinedName / TXLSXDefinedNames |
| Calculate | 针对活动工作表编译并求值 Excel 公式字符串,允许开头的 = 。单元格引用、区域、被引用单元格中存储的公式、跨工作表引用、嵌套的公式型已定义名称、带逐单元格错误的广播数组、多变量回归与预测数组,以及受支持的文本、日期、工作日、工程/进制转换、位运算、统计、聚合和数学函数,都通过共享的 HotXLS 公式引擎求值。自定义或不受支持的函数请参见 OnUserFunction 来处理自定义或不受支持的函数 |
| CreateLoadedCellCursor | 在已存储的 XLSX 值和公式上创建恒定状态的行优先游标,其中一个重载还会把独立设置样式的空白单元格作为 xlckBlank发出。稀疏块和打包存储会被遍历,而不会实体化打包表示。参见 CreateLoadedCellCursor 方法 |
| CreateReadOnlyView | 创建常数时间的共享模型只读视图,具备本地活动工作表、按值快照、缓存的公式结果、可选的隔离公式求值、直接的打包单元格读取、通过 IXLSXWorkbookOwner的引用计数生命周期,以及快速失败的写入互斥; IXLSReadOnlyWorkbookView 还会报告 SheetCount ,供不接触工作簿模型的枚举调用方使用。参见 CreateReadOnlyView 方法 |
| SaveSemanticSnapshot, ComputeSemanticHash | 流式输出版本化的规范工作簿语义表示,或计算其小写 SHA-256,而无需实体化完整快照。参见 语义快照与哈希方法 |
| RenderCalibration, CaptureRenderCalibration, ResetRenderCalibration | 原子地赋予经过校验的渲染校准值、为单次操作捕获独立的值快照,或恢复默认值;运行时配置不会被序列化,本身也不会调整工作表的行或列尺寸。参见 渲染校准值与快照 |
| CreateRenderGeometry | 创建操作专属的几何与字体测量服务,具备不可变校准值、工作簿生成与后端标识以及有界本地缓存;AutoFit 每次操作捕获一个服务实例,分页每次构建捕获一个,且不写入工作表尺寸。参见 渲染几何与字体测量 |
| OnUserFunction, OnUserFunctionEx | 当公式调用自定义或不受支持的函数时, Calculate 使用的回调。参见
OnUserFunction / OnUserFunctionEx 回调 |
| AllowUnsafeFormulaCallbacks | 默认为 false,在参数求值之前阻止危险的外部函数名和宏风格函数名到达用户函数处理器。参见 回调安全策略 |
| GetSheetNames(FileName, AList), GetSheetNames(Stream, AList) | 读取 xl/workbook.xml 并按工作簿顺序把工作表名称追加到 AList ,不加载工作表 XML。流重载要求传入完整的 XLSX 包流。返回读取到的名称数量;包无法打开时返回
-1 when the package cannot be opened |
| Alignments | 工作簿级对齐调色板。单元格把 TXLSXCell.AlignmentIndex 设为该集合中从 1 开始的索引即可选用对齐项。参见
TXLSXAlignment |
| Document properties | Title、Author、Subject、Keywords、Description、Category、LastModifiedBy、Company、Application、AppVersion、Created、Modified。只要设置其中之一,SaveAs 就会填充
docProps/core.xml + docProps/app.xml (否则工作簿保留最小部件集) |
| ProtectWorkbook / UnProtectWorkbook | 工作簿保护开关,带可选的 16 位旧式密码哈希和 LockStructure /
LockWindows 标志,以
<workbookProtection> 形式反映在 xl/workbook.xml 中 |
| LoadVbaProjectFromFile / VbaProject / HasVbaProject / VbaProjectDefined | LoadVbaProjectFromFile 导入原始 vbaProject.bin 负载; VbaProject 暴露这些字节; HasVbaProject 和只读的 VbaProjectDefined 都报告是否存在负载。希望 Excel 启用宏时,请用 .xlsm 扩展名保存 |
| ParsedVBAProject | 当前
vbaProject.bin 负载的只读解析视图。当负载是有效的 OLE VBA 存储时,返回暴露模块名和源码文本的 TXLSVBAProject ;否则返回 nil。原始
VbaProject 负载仍是 SaveAs/Open Roundtrip 所使用的权威字节 |
| AddChartSheet(Name, Type, Title) | 创建标记为
IsChartSheet = True 的工作表,并在 Charts[0]
中预置一个合理的默认整页锚点。SaveAs 把这类工作表写入 xl/chartsheets/sheetN.xml。参见
TXLSXChart |
| ParallelParse | 为 True 时,多工作表 Open 会把工作表 ZIP 条目直接流送到工作线程本地的 inflate 和 XML 读取器,不保留解压后的工作表 XML 暂存副本,且包源只在每次定位读取期间被锁定。设为 False 则一次解析一个工作表。默认为 True |
| ParallelParseThreads | 设置 Open期间并发解析工作表流的最大数量。0 表示自动选择工作线程数,正值设置显式上限。活动的 inflater 和 XML 读取器工作集都受此数量约束 |
| StreamingWrite | 为 True 时,SaveAs 对每个工作表使用
WriteWorksheetXmlStreaming ——不持有 sheetXmls 缓存,sharedStrings.xml 在所有工作表填充完 SST 后最后输出。配合逐行的
TXLSWideStringBuilder ,大工作表的内存占用保持线性。默认为 False(沿用既有行为) |
| PreserveUnsupportedParts / ClearUnsupportedParts | PreserveUnsupportedParts 默认为 True,在 Open 和 SaveAs 期间保留未知的关系可达包部件,以及外来的工作簿根命名空间声明、markup-compatibility 属性和完整的工作簿级 <extLst>
负载。当保留扩展负载内的关系引用与源发生生成 ID 冲突时会重新映射。要在 Open 前丢弃这些状态,可把该属性设为 False 或调用
ClearUnsupportedParts。
UnsupportedPartCount 和 UnsupportedPartBytes
诊断统计保留的包部件,不包含内联工作簿 XML 元数据 |
| PreserveRawParts | 默认为 True,让基于文件的 SaveAs 操作打开一个经过校验的私有源归档,然后以原始压缩负载复制未变更的主题、VBA、连接、外部链接、图像、图表、透视以及关系可达的不透明条目。成功的文件保存会为后续保存建立新的干净基线。基于流的工作簿、源文件变化、负载被编辑、不支持的压缩方法和无效压缩尺寸会改用事务性序列化回退或拒绝 |
| SaveAsEncrypted / OpenEncrypted / CanReadEncrypted | ECMA-376 标准加密写入支持
SaveAsEncrypted 为非空密码写出符合标准的 AES-128 保护 OLE 复合文件容器,可用时使用 AES-NI 加速,否则使用可移植的软件回退。加密输出可在 Excel 2007 及以后版本中用保存时的密码打开。 CanReadEncrypted 检测 OLE2 魔数字节; OpenEncrypted 对未加密文件透明回退到普通 Open ,在解密支持落地之前对加密包仍抛出
EXlsxEncryptionNotImplemented 加密包同样如此
在解密支持落地之前 |
| SaveAs(FileName) | 把工作簿写入给定文件。成功返回
1 ,失败返回负值。若工作簿没有工作表,写入前会添加默认的 Sheet1 is added before writing此重载与 SaveAs(FileName, FileFormat) 会先暂存输出,再替换目标
若替换失败,返回值为 -1 , LastDiagnostic 会报告 xlsDiagnosticOutputCommitFailed (1005)、原始 Windows NativeCode以及系统错误消息
旧目标和工作簿 FileName 保持不变;临时输出会被释放,之后的保存会清除上一次的诊断 |
| SaveAs(FileName, FileFormat) | 接受 xlsxOpenXMLWorkbook 输出常规 OOXML、 xlsxOpenDocumentSpreadsheet 输出 ODS、 xlsxOpenXMLTemplate 输出无宏的 XLTX 模板,或 xlsxOpenXMLMacroEnabledTemplate 输出 XLTM 模板;所有 OOXML 选择均支持缓冲输出和流式输出模板输出为 application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml 写入 /xl/workbook.xml;文件请使用 .xltx 扩展名,通过 HTTP 提供包时请使用 application/vnd.openxmlformats-officedocument.spreadsheetml.template when serving the package over HTTP必须显式选择格式:文件扩展名和导入的模板都不会改变默认的 SaveAs 输出若存在 VBA 工程,XLTX 输出会在写入目标之前返回 -1 并给出不支持的格式诊断;XLTM 保留既有 VBA 工程,也接受没有宏的工作簿SaveAsODS 仍然是 ODS 输出的具名快捷方式,并支持可选的 TODSExportOptions 控制 |
| GetConversionReport / SaveAsChecked | 检查调用方拥有的、无变更的已知功能转换报告,或通过保持 AllowLossy=False 在写入前拒绝降级和被丢弃的功能
显式的有损保存仍会拒绝不受支持的转换;目标、所有权、诊断和保留边界参见 计算与转换保真度 |
| SaveAs(Stream) / SaveAs(Stream, FileFormat) | 把工作簿直接写入任意 TStream, FileFormat 重载接受 xlsxOpenXMLWorkbook、 xlsxOpenDocumentSpreadsheet、 xlsxOpenXMLTemplate或 xlsxOpenXMLMacroEnabledTemplate,分别对应内存中的 OOXML 工作簿、ODS 电子表格、XLTX 模板或 XLTM 模板成功返回 1,流式保存遵循 RecalcBeforeSave:手动模式保留已有的公式缓存,脏值和总是重算策略则在序列化前刷新它们流的所有权仍归调用方;开始写入之前的取消会保留其内容和位置,而序列化开始后的失败可能留下部分输出 |
| Open(FileName) | 读取 OOXML .xlsx 归档并用其内容替换
Sheets 集合。成功返回 1
on success |
| Open(FileName, Password) | 为将来的加密 XLSX 支持保留。当前行为与 Open(FileName) 相同 — 密码被忽略 |
| Open(Stream) | 从
TStream读取 OOXML .xlsx 归档。成功返回 1 on success |
| OpenCSV(FileName) / OpenCSV(Stream) | 把 CSV 或 TSV 文本导入工作簿,自动检测分隔符(,、 ;、
制表符或竖线)、基于 BOM 的 UTF-8 / UTF-16 编码检测、RFC 4180 风格的引号字段,并可通过 ADetectTypes 重载可选地进行值类型推断。对
Open(FileName) 或 .csv 调用
.tsv 会自动转到该导入器。参见
OpenCSV 方法 |
| OpenODS(FileName) / OpenODS(Stream) | 从文件或流导入 OpenDocument Spreadsheet(.ods)包。读取器加载 content.xml、来自 styles.xml的共享样式信息以及视图设置(如有),保留工作表名称、标量值、缓存的公式结果、基本公式引用转换、重复的行/列/单元格、合并区域、富文本、超链接、批注、内嵌图像、内嵌图表、隐藏的行/列/工作表、行高、列宽、继承/默认样式、数字/日期/时间/货币/科学/分数格式、单元格和工作表保护状态、命名区域、打印区域、手动分页符、冻结窗格、AutoFilter 区域、行/列大纲分组、页眉/页脚、带提示的数据有效性验证,以及带公式/色阶/数据条的条件格式和工作表标签颜色。完整的 OpenFormula 语义、ODS 保护密钥、批注几何、高级批注格式以及电子表格内容之外的包特性不予转换 |
| SaveAsODS(FileName) / SaveAsODS(Stream), with optional TODSExportOptions | 把工作簿保存为合法的 OpenDocument Spreadsheet 包。它直接写出 ODF mimetype、manifest、元数据、样式和工作表内容,携带类型化值、公式、样式、富文本、尺寸、合并、超链接、图像、图表、命名区域、AutoFilter 区域、条件格式、数据有效性验证、冻结窗格、页面设置、页眉/页脚、打印区域、手动分页符、大纲分组、标签颜色和工作表可见性(以 HotXLS 工作簿模型表示的特性为准)。传入导出选项(包括 nil)会保留正常的重算策略、进度取消、诊断和写保护。文件输出会先暂存一个同目录临时文件,只在序列化成功后才替换目标;序列化失败或提交前取消都会保留原有目标文件。写入进度会报告每张完成的表格,ppsEnd 是终结通知,其 Abort 请求无法取消已经完成的保存。流输出保留调用方所有权和普通的流式保存行为——序列化开始后仍可能留下部分输出 |
| TODSExportOptions | 控制 ODS 导出。 Generator 覆盖 meta:generator 中的 meta.xml值,空值使用内置的 HotXLS 生成器字符串。 IncludeCharts 和 IncludeImages 默认为 True;设为 False 时会同时移除对应的绘图框架、包部件和 manifest 条目,使输出不含孤立的图表或图像引用。选项实例归调用方所有,用完必须释放 |
| GetODSSheetNames(FileName, AList), GetODSSheetNames(Stream, AList) | 只从 content.xml 读取 ODS 表格名称到 AList ,不重置或填充工作簿。当文件选择器或导入流程需要在加载工作簿之前获取工作表名称时使用 |
| SaveAsCSV overloads | 四个重载(FileName 或 Stream × 活动工作表默认 / 显式 SheetIndex + Delimiter)。把所选工作表写成带 BOM 的 UTF-8 CSV。日期值渲染为
yyyy-mm-dd hh:nn:ss;公式单元格在导出前先计算,只有计算不可用时才使用公式文本。成功返回 0 |
| SaveAsHTML overloads | 选项重载接受 TXLSXHtmlExportOptions ,用于 Title、 WriteDocument、 IncludeStyles、 IncludeBOM和 TableClass。要输出表格片段请把 WriteDocument 设为 False;把输出嵌入现有 UTF-8 响应时请把 False 设为 False。导出输出现在会把单元格超链接保留为 IncludeBOM 锚点,把锚定的图像保留为内联 False 图像 URI;工作簿级导出包含已填充单元格之外的锚点。单元格批注也会以转义的 <a> anchors and anchored images as inline data: 图片 URI;工作簿级导出包含已填充单元格之外的锚点。单元格批注也会以转义后的 <td>title 属性输出,工作簿级导出包含仅有批注的锚点。启用 IncludeStyles 时,显式 ColWidth 值输出为 <col> 宽度,显式 RowHeight 值输出为 <tr> 高度样式。启用 <span> 时,富文本单元格 run 会以带内联字体、颜色、强调和下划线样式的转义 IncludeStyles 元素输出。启用 border-left时,单元格边框会输出为 CSS border-right、 border-top、 border-bottom 和 IncludeStyles 规则。被 RowHidden / ColHidden标记的隐藏行列以及显式零宽列会在生成的表格和 <colgroup>中跳过。启用 vertical-align 时,垂直对齐设置会输出为 CSS IncludeStyles 规则 |
| SaveAsRTF overloads | 四个重载(FileName 或 Stream × 活动工作表默认 / 显式 SheetIndex)。把所选工作表写成带简单表格的 RTF 1.6 文档。列宽由 ColWidth 数据推导(1 字符单位 ≈ 96 twips;默认 809 twips)。应用逐单元格的粗体/斜体/字号;非 ASCII 字符编码为带符号 16 位的 \uN?
RTF unicode 转义。合并单元格不跨行跨列。成功返回 0 |
| ActiveSheet | 活动(选中)工作表的 1 起始索引(无时为 0),与经典 XLS 引擎的 ActiveSheetIndex一致。当需要输出工作簿视图选项时, SaveAs 会在 activeTab="N" 上写入 <workbookView> (OOXML 的 activeTab 属性本身保持 0 起始),并用 tabSelected="1" |
| Minimized / WindowHidden / ShowHorizontalScroll / ShowVerticalScroll | 写入 <workbookView>的工作簿窗口外观标志。 Minimized 写入 minimized="1", WindowHidden 写入 visibility="hidden", ShowHorizontalScroll / ShowVerticalScroll 隐藏或显示工作簿滚动条。 Open 会 Roundtrip 全部四个值 |
| XWindow / YWindow / WindowWidth / WindowHeight | 写入 <workbookView>的工作簿窗口几何信息。 XWindow 和 YWindow 保存窗口原点, WindowWidth 和 WindowHeight 保存其大小。值被钳制到 0..65535 并在加载时 Roundtrip |
| ShowSheetTabs / TabRatio / FirstSheet / AutoFilterDateGrouping | 写入 <workbookView>的工作簿窗口视图选项。 ShowSheetTabs 隐藏或显示工作表标签栏, TabRatio 控制标签栏与滚动条的宽度分配并钳制到 0..1000, FirstSheet 以 0 起始工作表索引选择第一个可见标签并钳制到存在的工作表, AutoFilterDateGrouping 控制 AutoFilter 下拉中的 Excel 日期分组。 Open 会 Roundtrip 全部四个值 |
| Date1904 | 工作簿日期基准。 False (默认)= Windows 1900 纪元; True = Mac 1904 纪元(所有日期序列号偏移 1462 天)。请在赋 单元格值之前设置它,Excel 才能渲染出相同的日历日期 当前为
TDateTime ,非默认限制也会持久保留 |
| Iterate / IterateCount / IterateDelta | 控制工作簿计算模式、公式引用样式和计算引擎标识。
IterateCount 接受
IterateDelta 、 Iterate 或 False |
| CalcMode / RefMode / CalcId | 控制工作簿计算模式、公式
引用样式和计算引擎标识
CalcMode accepts auto,
manual, or autoNoTableRefMode 接受 A1 或 R1C1
,输入不区分大小写,输出为规范形式
现代富错误输出使用不低于 191029 的发出 CalcId,以便 Excel 解释缓存中的现代错误;更高的请求值会被保留,内存中的属性保持不变 |
| FullCalcOnLoad / ForceFullCalc / CalcCompleted / CalcOnSave / FullPrecision | 控制完全重算、缓存计算完成标记、保存前重算和精度策略。每个非默认值都会独立发出并在 Roundtrip 中保留对应的 <calcPr> 属性 |
| ConcurrentCalc / ConcurrentManualCount | 控制并发工作簿计算和手动工作线程数提示。
ConcurrentManualCount 钳制为不小于零 |
| SourceFormat | 报告最近一次成功的 Open 或 OpenODS 调用加载的包家族,OOXML 工作簿和模板(包括 XLTX 与 XLTM)返回 xlsxOpenXMLWorkbook,ODS 返回 xlsxOpenDocumentSpreadsheet,受支持的 XLSB 值与样式子集返回 xlsxExcelBinaryWorkbook新建工作簿在打开文件之前报告 xlsxOpenXMLWorkbook,此属性不选择输出格式 |
| IndexedColor[Index] | 给定 OOXML 索引颜色调色板槽位(0..63)的 ARGB 值。读取时如有用户覆盖则返回覆盖值,否则返回内置 OOXML 默认值(XlsxDefaultIndexedPalette)。写入会覆盖槽位 N;SaveAs 随后输出包含全部 64 个槽位的完整
<indexedColors> 块 |
| ResolveIndexedColor | 对公开颜色索引、BIFF icv 值或 OOXML 索引颜色进行分类,并在工作簿调色板或显式的系统颜色回调能提供时解析出规范化的 ARGB 值 |
| NearestIndexedColor | 通过共享的缓存 OKLab 匹配器返回最接近的物理调色板条目,不改变调色板或工作簿状态 |
| ScanIndexedColorUsage | 返回确定性的 56 槽位清单,包含调色板颜色、定义和引用计数、使用方种类以及保留锁,不实体化单元格也不改变工作簿状态 |
| BuildBiffPalettePlan | 返回无变更的 56 槽位 BIFF 调色板方案,包含锁定槽位、聚合的真彩目标、确定性映射、来源标识以及加权 OKLab 误差统计 |
| ApplyBiffPalettePlan | 在校验来源标识、槽位元数据、锁定和不透明目标之后,原子地应用所有变更的调色板条目,并一次性重建缓存的匹配器 |
| HasCustomIndexedColor / CustomIndexedColorCount / ResetIndexedColors | HasCustomIndexedColor(N) 返回
True ;
CustomIndexedColorCount 返回被覆盖槽位的数量(0 = SaveAs 不输出 <colors> 块);
ResetIndexedColors 丢弃所有覆盖并恢复默认调色板 |
| ExternalLinks | 外部工作簿引用的集合。每个
TXLSXExternalLink
条目持有一个 Target URL 和一个 SheetNames 列表。SaveAs 在 <externalReferences> 中输出
xl/workbook.xml 块及对应的
xl/externalLinks/ 部件。Open 会 Roundtrip Target 和 SheetNames;
<sheetDataSet> 内的缓存单元格值不保留 |
| CreateWorkspaceWorkbook | 返回此工作簿的可撤销 IXLSWorkspaceWorkbook 适配器。适配器保留工作簿的来源标识和代号,并在工作簿模型销毁前断开连接 |
| ExternalWorkspace | 供实时外部公式求值使用的线程安全、保留路径的注册表。精确标识和别名优先,有歧义的基名查找会被拒绝,标识规范化不执行任何隐式文件或网络访问。参见 实时工作簿工作区 |
| RegisterExternalWorkbook / UnregisterExternalWorkbook | Compatibility facade over ExternalWorkspace 之上的兼容外观。注册把一个无歧义的提供名称映射到工作簿存储的关系目标,保持路径和扩展名彼此区分,并拒绝冲突;注销会移除请求的注册,目标销毁时也会安全撤销适配器 |
uses lxHandleX;
var
wb: TXLSXWorkbook;
begin
wb := TXLSXWorkbook.Create;
try
wb.Sheets.Add('Demo').Cells.Item[1, 1].Value := 'Hello';
wb.SaveAs('demo.xlsx');
wb.Open('demo.xlsx');
ShowMessage(wb.Sheets[0].Cells.Item[1, 1].Value);
finally
wb.Free;
end;
end;