Open XML SDK by Microsoft
Open XML SDK
Note
3.0.0 版本引入了重大变更,您应当能够更新包并通过有限的修改重新编译。有关包含的问题和 PR,请参阅 v3.0.0 里程碑。
Important
自 2024 年 4 月 2 日起,CI 源 URL 已更改。如果使用 CI 构建,请更新为新 URL。
Open XML SDK 是一个用于处理 Microsoft Office Word、Excel 和 PowerPoint 文档的框架。它包含用于 OPC 包、Flat OPC 文件以及两种形式的 Open XML 标记(即强类型类和 LINQ to XML)的低级操作 API。其设计旨在紧密遵循 Microsoft Office 对 ISO 29500 标准的实现,但并非旨在直接提供更高级别的抽象或生产力工具。
这些 API 支持以下场景:
- 高性能生成文字处理文档、电子表格和演示文稿。
- 文档修改,例如添加、更新和删除内容及元数据。
- 使用正则表达式搜索和替换内容。
- 将一个文件拆分为多个文件,以及将多个文件合并为一个文件。
- 更新 Word/PowerPoint 中图表的缓存数据和嵌入的电子表格。
使用 Open XML SDK 的前提条件:具备相关格式(https://learn.microsoft.com/en-us/openspecs/office_standards/ms-offstandlp)和标准(https://standards.iso.org/ittf/PubliclyAvailableStandards/index.html - 搜索 29500)的详细知识。
目录
包
Open XML SDK 的官方发布 NuGet 包位于 NuGet.org 上:
| 包 | 稳定版 | 预发布版 |
|---|---|---|
| DocumentFormat.OpenXml.Framework | ||
| DocumentFormat.OpenXml | ||
| DocumentFormat.OpenXml.Linq | ||
| DocumentFormat.OpenXml.Features |
每日构建版
Open XML SDK 最新构建的 NuGet 包可通过 Azure Blob 上的自定义源获取。此处的稳定版发布将同步到 NuGet,且内容完全一致。您必须设置一个 NuGet.config 文件,其格式大致如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="OpenXmlCI" value="https://ooxml.blob.core.windows.net/feed/index.json" />
</packageSources>
</configuration>
有关最新变更,请参阅 changelog
已知问题
- 在 .NET Core 以及 .NET 5 及更高版本上,ZIP 包无法流式传输数据。因此,在某些情况下,工作集可能会急剧增大。这是一个 已知问题。
- 在 .NET Framework 上,在某些情况下可能会引发
IsolatedStorageException。这种情况通常发生在环境中的 AppDomain 证据不足时操作大型文档。有关解决方法的示例可在此处获取 here。
文档
有关官方文档,请参阅 Open XML SDK。
如果您有操作类问题
- Stack Overflow(标签:openxml 或 openxml-sdk)
- 操作示例:
相关工具
- Open XML SDK 2.5 生产力工具:该生产力工具提供与 Open XML SDK 2.5 兼容的查看和代码生成功能。
- Open XML Powertools:提供了用于实现各种 Open XML 场景的示例代码和指导。
- ClosedXml:此库在 OpenXml SDK 的基础上提供了简化的对象模型,用于操作和创建 Excel 文档。
- OfficeIMO:此库在 OpenXml SDK 的基础上提供了简化的对象模型,用于操作和创建 Word、Excel、PowerPoint 文档,并支持 Markdown、Html、Pdf 和 Visio。
- OpenXML-Office:此 NuGet 库在 OpenXml SDK 的基础上提供了简化的对象模型,用于操作和创建 PPT 和 Excel 文档。
- Serialize.OpenXml.CodeGen:这是一个将 OpenXml 文档转换为创建该文档所需的 .NET 代码的工具。
- Html2OpenXml:这是一个接收 HTML 并将其转换为 OpenXml 文档的工具。
- DocxToSource:该工具旨在替代旧版 OpenXML SDK 生产力工具。
- OOXML Viewer:这是一个 Visual Studio Code 扩展,用于查看和编辑 Office Open XML 文件的 xml 部分,并在从外部程序保存时查看 OOXML 部分与先前版本的差异。在 VS Code 扩展选项卡中搜索“OOXML”,或从 VS Code Marketplace 下载。
- ShapeCrawler:此库在 OpenXml SDK 的基础上提供了简化的对象模型,用于操作 PowerPoint 文档。
- OOXML Validator:用于验证 Office Open XML 文件的 VS Code 扩展。在 VS Code 扩展选项卡中搜索“OOXML”,或从 VS Code Marketplace 下载。
如何参与贡献?
我们欢迎各类贡献!全球各地的许多人都为改进这个项目提供了帮助。
- 贡献指南 中说明了我们欢迎的贡献类型
报告安全问题和安全漏洞
安全问题和漏洞应通过电子邮件私下报告给 Microsoft 安全响应中心 (MSRC),邮箱地址为 secure@microsoft.com。您应在 24 小时内收到回复。如果由于某种原因未收到回复,请通过电子邮件跟进,以确保我们收到了您的原始消息。更多信息,包括 MSRC PGP 密钥,可在 安全技术中心 中找到。
.NET Foundation
Open XML SDK 是 .NET Foundation 项目。
本项目采用了 Contributor Covenant 定义的行为准则,以明确我们社区中的预期行为。有关更多信息,请参阅 .NET Foundation 行为准则。
许可证
Open XML SDK 根据 MIT 许可证授权。