使用 XLSX 包装
使用 XLSX 包装
Aspose.Cells FOSS for C++ 通过专用的序列化层读取和写入 .xlsx Open XML 格式。XlsxWorkbookSerializer 类负责协调加载和保存所有工作簿部件,包括工作表、样式、已定义名称、文档属性和自动筛选。
加载和保存 XLSX 文件
对所有加载和保存操作使用 Workbook 类。在内部,XlsxWorkbookSerializer 处理 Open XML 包装:
#include "aspose/cells_foss/Workbook.h"
using namespace Aspose::Cells_FOSS;
int main() {
// Load existing XLSX
Workbook workbook("input.xlsx");
// Modify content...
// Save back to XLSX
workbook.Save("output.xlsx");
return 0;
}文档属性
XLSX 文件包含核心和扩展的文档属性(标题、作者、创建日期)。这些属性由 XlsxDocumentProperties 管理,该对象构建并加载 docProps/core.xml 和 docProps/app.xml 部分:
| Part | 管理者 | Contains |
|---|---|---|
docProps/core.xml | XlsxDocumentProperties::BuildCorePropertiesDocument | 标题、作者、创建时间、修改时间 |
docProps/app.xml | XlsxDocumentProperties::BuildExtendedPropertiesDocument | 应用名称、版本 |
工作簿元数据和设置
工作簿级元数据 — 计算设置、工作簿视图和工作簿保护 — 由 XlsxWorkbookProperties 管理:
BuildWorkbookPropertiesElement— 写入工作簿的计算和迭代设置BuildWorkbookProtectionElement— 写入工作簿级别的密码保护BuildBookViewsElement— 写入窗口位置和活动工作表设置
样式和数字格式
样式部分(xl/styles.xml)由 XlsxWorkbookStyles 管理。它将内存模型中的 Style 对象映射为序列化的字体、填充、边框和数字格式记录:
BuildStylesheet— 将所有样式序列化为 XMLLoadStylesheet— 从现有的 XLSX 文件读取样式StylesEqual— 检查两个样式对象是否会产生相同的 XML
自动筛选打包
每个工作表的自动筛选状态由 XlsxWorkbookAutoFilter 序列化:
BuildAutoFilterElement— 写入<autoFilter>XML 元素LoadAutoFilter— 从工作表部件读取自动筛选配置
已定义名称
已命名的范围和公式被打包在工作簿部件中,并由 XlsxWorkbookDefinedNames 加载:
BuildDefinedNames— 将所有DefinedName条目写入工作簿 XMLLoadWorkbookDefinedNames— 在文件加载期间读取已定义的名称
技巧与最佳实践
- 将
Workbook::Save(fileName)用作唯一的退出点 — 除非扩展库,否则不要直接调用序列化器类。 .xlsx格式是唯一完全受支持的格式;在 v0.1 中不支持保存为其他格式。- 传递给
Workbook(filePath)或Save(filePath)的文件路径必须使用平台路径分隔符,并且在工作目录可能变化的环境中运行时必须是完整路径。 - 通过
XlsxWorkbookProperties::BuildWorkbookProtectionElement应用的工作簿保护独立于通过Worksheet::Protect设置的工作表级别保护。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
| 文件加载失败 | 无效或已加密的 XLSX | 确保文件是普通(未加密码保护)的 XLSX |
| 保存后样式丢失 | 保存前样式未应用 | 在 Workbook::Save 之前调用 Cell::SetStyle(style) |
| 往返后缺少已定义的名称 | 作用域设置到了错误的工作表 | 使用 DefinedName::SetFormula 与完整的范围地址 |
API Reference 概述
| 类/方法 | 描述 |
|---|---|
Workbook(filePath) | 加载 XLSX 文件 |
Workbook::Save(fileName) | 保存为 XLSX |
XlsxWorkbookSerializer::Save | Internal: 将模型序列化为 Open XML |
XlsxWorkbookSerializer::Load | Internal: 将 Open XML 反序列化为模型 |
XlsxDocumentProperties | 核心及扩展文档属性打包 |
XlsxWorkbookProperties | 工作簿元数据和设置序列化 |
XlsxWorkbookStyles | 样式表打包 |
XlsxWorkbookAutoFilter | Auto-filter XML 打包 |
XlsxWorkbookDefinedNames | 已定义名称 XML 包装 |