使用 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.xmlXlsxDocumentProperties::BuildCorePropertiesDocument标题、作者、创建时间、修改时间
docProps/app.xmlXlsxDocumentProperties::BuildExtendedPropertiesDocument应用名称、版本

工作簿元数据和设置

工作簿级元数据 — 计算设置、工作簿视图和工作簿保护 — 由 XlsxWorkbookProperties 管理:

  • BuildWorkbookPropertiesElement — 写入工作簿的计算和迭代设置
  • BuildWorkbookProtectionElement — 写入工作簿级别的密码保护
  • BuildBookViewsElement — 写入窗口位置和活动工作表设置

样式和数字格式

样式部分(xl/styles.xml)由 XlsxWorkbookStyles 管理。它将内存模型中的 Style 对象映射为序列化的字体、填充、边框和数字格式记录:

  • BuildStylesheet — 将所有样式序列化为 XML
  • LoadStylesheet — 从现有的 XLSX 文件读取样式
  • StylesEqual — 检查两个样式对象是否会产生相同的 XML

自动筛选打包

每个工作表的自动筛选状态由 XlsxWorkbookAutoFilter 序列化:

  • BuildAutoFilterElement — 写入 <autoFilter> XML 元素
  • LoadAutoFilter — 从工作表部件读取自动筛选配置

已定义名称

已命名的范围和公式被打包在工作簿部件中,并由 XlsxWorkbookDefinedNames 加载:

  • BuildDefinedNames — 将所有 DefinedName 条目写入工作簿 XML
  • LoadWorkbookDefinedNames — 在文件加载期间读取已定义的名称

技巧与最佳实践

  • 将 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::SaveInternal: 将模型序列化为 Open XML
XlsxWorkbookSerializer::LoadInternal: 将 Open XML 反序列化为模型
XlsxDocumentProperties核心及扩展文档属性打包
XlsxWorkbookProperties工作簿元数据和设置序列化
XlsxWorkbookStyles样式表打包
XlsxWorkbookAutoFilterAuto-filter XML 打包
XlsxWorkbookDefinedNames已定义名称 XML 包装

另请参阅

 中文