DocumentFormat.OpenXml 3.1.0
dotnet add package DocumentFormat.OpenXml --version 3.1.0
NuGet\Install-Package DocumentFormat.OpenXml -Version 3.1.0
<PackageReference Include="DocumentFormat.OpenXml" Version="3.1.0" />
paket add DocumentFormat.OpenXml --version 3.1.0
#r "nuget: DocumentFormat.OpenXml, 3.1.0"
// Install DocumentFormat.OpenXml as a Cake Addin #addin nuget:?package=DocumentFormat.OpenXml&version=3.1.0 // Install DocumentFormat.OpenXml as a Cake Tool #tool nuget:?package=DocumentFormat.OpenXml&version=3.1.0
Open XML SDK
[!NOTE]
v3.0.0 重新整理并解决了某些技术债务,同时尽可能保留源兼容性。您应该能够以有限的方式更新您的包并重新编译。然而,二进制兼容性并非目标,这将对一些有文档说明的更改造成破坏。引入此类更改的 PR 被标记为
breaking-change
标签,并被添加到列表中,以帮助迁移到 v3.0.0。请参阅 v3.0.0 里程碑,了解包含的问题和 PR。有关讨论,请加入我们在此 问题 。
[!IMPORTANT] CI 频道 URL 已于 2024 年 4 月 2 日更改。如果使用 CI 构建,请更新为新 URL。
Open XML SDK 提供了用于处理 Office Word、Excel 和 PowerPoint 文档的工具。它支持以下场景:
- 高性能的文档、电子表格和演示文稿生成。
- 文档修改,例如添加、更新和删除内容以及元数据。
- 使用正则表达式搜索和替换内容。
- 将文件分割成多个文件(切碎),或将多个文件合并成一个文件。
- 更新 Word/PowerPoint 中图表的缓存数据和嵌入的电子表格。
目录
包
Open XML SDK 的官方发布 NuGet 包位于 NuGet.org
包 | 下载 | 预发布 |
---|---|---|
DocumentFormat.OpenXml.Framework | ||
DocumentFormat.OpenXml | ||
DocumentFormat.OpenXml.Linq | ||
DocumentFormat.OpenXml.Features |
每日构建
Open XML SDK 最新构建的 NuGet 包可以作为 Azure 块上的自定义源。这里的稳定发布将镜像到 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>
有关最新变更,请参阅 变更日志
框架支持
该包目前支持以下目标
- .NET Framework 3.5、4.0、4.6
- .NET Standard 2.0
- .NET 6.0
有关平台支持详情,包括 Mono 和 Unity 等其他运行时,请参阅 https://docs.microsoft.com/en-us/dotnet/standard/net-standard 上的文档。
已知问题
- 在 .NET Core 和 .NET 5 及以上版本中,ZIP 包没有数据流的方式。因此,在某些情况下,工作集可能会膨胀。这是一个 已知问题。
- 在 .NET Framework 中,在某些情况下可能会抛出
IsolatedStorageException
。这通常发生在在 AppDomain 证据不足的环境下操作大型文档的情况下。一个带有解决方案的示例在此这里。
文档
有关官方文档,请参阅 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 文档。
- 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市场下载。
- ShapeCrawler:这个库在OpenXml SDK之上提供了一个简化的对象模型,用于操作PowerPoint文档。
- OOXML Validator:VS Code扩展用于验证Office Open XML文件。在VS Code扩展选项卡中搜索“OOXML”,或从VS Code市场下载。
如何贡献?
我们欢迎贡献!世界上许多人都帮助使这个项目变得更好。
- 贡献解释了我们欢迎何种类型的贡献
报告安全问题和安全漏洞
安全问题和漏洞应通过电子邮件私下报告给微软安全响应中心(MSRC)[email protected]。您应该在24小时内收到回复。如果由于某种原因您没有收到回复,请通过电子邮件跟进,以确保我们收到了您的原始消息。更多信息,包括MSRC PGP密钥,可以在安全技术中心找到。
.NET基金会
Open XML SDK是.NET基金会的项目。
本项目已采用由贡献者公约定义的行为准则,以明确我们社区的预期行为。更多信息请见.NET基金会行为准则。
许可
Open XML SDK在MIT许可下发布。
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET Framework | net35 是兼容的。 net40 是兼容的。 net403 已计算。 net45 已计算。 net451 已计算。 net452 已计算。 net46 是兼容的。 net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NET Framework 3.5
- DocumentFormat.OpenXml.Framework (>= 3.1.0)
-
.NET Framework 4.0
- DocumentFormat.OpenXml.Framework (>= 3.1.0)
-
.NET Framework 4.6
- DocumentFormat.OpenXml.Framework (>= 3.1.0)
-
.NET Standard 2.0
- DocumentFormat.OpenXml.Framework (>= 3.1.0)
-
net8.0
- DocumentFormat.OpenXml.Framework (>= 3.1.0)
NuGet 包 (747)
显示对 DocumentFormat.OpenXml 依赖的前 5 个 NuGet 包
包 | 下载 |
---|---|
ClosedXML 查看发行说明 https://github.com/ClosedXML/ClosedXML/releases/tag/0.104.0-preview2 ClosedXML 是一个用于阅读、操作和写入 Excel 2007+ (.xlsx, .xlsm) 文件的 .NET 库。它旨在提供一种直观且用户友好的界面来处理底层的 OpenXML API。 |
|
Omnia.Fx.NetCore
包描述 |
|
Microting.eForm 包描述 |
|
OpenXmlPowerTools
OpenXmlPowerTools 提供了与 Open XML 文档(DOCX、XLSX 和 PPTX)编程的指南和示例代码。它基于 Open XML SDK 并扩展了其功能。它支持以下场景:• 将 DOCX/PPTX 文件拆分为多个文件。• 将多个 DOCX/PPTX 文件合并为单个文件。• 使用 XML 数据填充模板 DOCX 文件中的内容。• 以高保真度将 DOCX 转换为 HTML。• 使用正则表达式在 DOCX/PPTX 中搜索和替换内容。• 管理跟踪修订,包括检测跟踪修订和接受跟踪修订。• 更新 DOCX/PPTX 文件中的图表,包括更新缓存数据以及嵌入的 XLSX。• 从 DOCX 文件中检索指标,包括所使用的样式层次结构、所使用的语言和所使用的字体。• 使用比直接编写标记更简单的代码编写 XLSX 文件,包括一种使写入具有数百万行记录的 XLSX 文件成为可能的流式方法。 |
|
SpreadsheetLight
SpreadsheetLight 是一个用 C# 编写的开源 Open XML 工作表 .NET 库,在 MIT 许可下发布。您可以使用它创建新 Open XML 工作表,或处理兼容 Microsoft Excel 2007/2010/2013 和 LibreOffice Calc 的现有 Open XML 工作表。无需 Office/Excel Interop。您不需要安装 Microsoft Office/Excel。 |
GitHub 仓库 (62)
显示依赖于 DocumentFormat.OpenXml 的前 5 个最受欢迎的 GitHub 仓库
仓库 | 星级 |
---|---|
microsoft/semantic-kernel
快速轻松地将前沿的 LLM 技术集成到您的应用中
|
|
OrchardCMS/OrchardCore
Orchard Core 是一个用 ASP.NET Core 构建的开放式模块化和多租户应用程序框架,该框架之上是一个内容管理系统(CMS)。
|
|
ClosedXML/ClosedXML
ClosedXML 是一个用于读取、操作和写入 Excel 2007+ (.xlsx, .xlsm) 文件的 .NET 库。它旨在提供一种直观且用户友好的界面来处理底层的 OpenXML API。
|
|
radzenhq/radzen-blazor
Radzen Blazor 是一组包含 DataGrid、Scheduler、Charts 和丰富的主题(包括 Material Design 和 FluentUI)的 70 多个免费原生 Blazor UI 组件。
|
|
FastReports/FastReport
FastReport 是一个免费的 .NET6/.NET Core/.NET Framework 开源报告工具,可以帮助您的应用程序生成类似文档的报告。
|
版本 | 下载 | 最后更新 |
---|---|---|
3.1.0 | 51,058 | 7/30/2024 |
3.0.2 | 1,917,618 | 3/14/2024 |
3.0.1 | 1,364,477 | 1/9/2024 |
3.0.0 | 998,897 | 11/15/2023 |
3.0.0-beta0003 | 19,921 | 9/5/2023 |
3.0.0-beta0002 | 18,971 | 6/14/2023 |
2.20.0 | 9,078,629 | 4/6/2023 |
2.19.0 | 4,619,137 | 12/14/2022 |
2.18.0 | 5,264,315 | 9/7/2022 |
2.17.1 | 3,151,158 | 6/30/2022 |
2.16.0 | 27,740,774 | 3/15/2022 |
2.15.0 | 4,995,893 | 12/17/2021 |
2.14.0 | 2,071,410 | 10/28/2021 |
2.14.0-beta0001 | 20,707 | 9/20/2021 |
2.13.1 | 3,148,716 | 8/18/2021 |
2.13.0 | 3,971,782 | 5/13/2021 |
2.13.0-beta0002 | 6,579 | 4/20/2021 |
2.13.0-beta0001 | 14,234 | 3/10/2021 |
2.12.3 | 3,176,294 | 2/24/2021 |
2.12.2 | 357,649 | 2/17/2021 |
2.12.1 | 1,906,678 | 1/11/2021 |
2.12.0 | 2,048,914 | 12/15/2020 |
2.11.3 | 7,432,741 | 7/17/2020 |
2.11.2 | 307,035 | 7/10/2020 |
2.11.1 | 7,657 | 7/10/2020 |
2.11.0 | 2,134,954 | 5/21/2020 |
2.11.0-beta0001 | 47,285 | 3/25/2020 |
2.10.1 | 4,781,397 | 2/28/2020 |
2.10.0 | 1,987,088 | 1/10/2020 |
2.10.0-beta0002 | 260,849 | 7/11/2019 |
2.10.0-beta0001 | 67,117 | 6/10/2019 |
2.9.1 | 9,862,924 | 3/13/2019 |
2.9.0 | 1,139,719 | 1/25/2019 |
2.8.1 | 8,386,026 | 1/6/2018 |
2.8.0 | 155,733 | 12/30/2017 |
2.7.2 | 46,172,775 | 6/7/2017 |
2.7.1 | 528,452 | 5/1/2017 |
2.5.0 | 12,874,893 | 8/4/2013 |
1.0.0 | 1,872,005 | 6/18/2011 |
# 更新日志
本项目所有显著更改都将在此文件中记录。
格式基于 [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
且本项目遵循 [语义版本控制](http://semver.org/spec/v2.0.0.html)。
## [3.0.2] - 2024-03-14
### 修复
- 修复了临时文件可共享且无法在关闭时删除的问题 (#1658)
## [3.0.1] - 2024-01-09
### 修复
- 修复了如果要确保内容类型正确,则文档类型可能不正确的问题 (#1625)
- 添加了检查以仅针对支持包进行搜索 (#1644)
- 如果遇到格式不正确的URI,异常现在与v2.x相同(《OpenXmlPackageException`,包含内部`UriFormatException`) (#1644)
## [3.0.0] - 2023-11-15
### 添加了
- 现在如果使用路径或流构造,则在.NET Core和.NET 5+上可以保存包 (#1307)。
- 现在可以支持格式不正确的URI(例如具有`mailto:`等URI的关系)
- 引入了`OpenXmlElement`的相等比较器 (#1476)
- `IFeatureCollection`现在可以枚举,并有一个有用的调试视图,可以查看已注册的功能 (#1452)
- 在部分创建中添加了MIME类型 (#1488)
- `DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main`命名空间
- `DocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main`命名空间
- `DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021`命名空间
### 修改了
- 当验证发现不正确的部分时,现在将包括关系类型而不是类名
- `IDisposableFeature`现在是框架包的一部分,并且默认情况下在包或部分中可用。
### 破坏性变化
- .NET Standard 1.3不再受支持。.NET Standard 2.0是最低支持的.NET Standard。
- 核心基础设施现在包含在一个新的包DocumentFormat.OpenXml.Framework中。类型类仍在DocumentFormat.OpenXml中。这意味着您可以引用DocumentFormat.OpenXml并编译相同的类型,但如果要使用更小的包,则可以仅依赖于框架包。
- 将`OpenXmlPackage.Package`的类型更改为`DocumentFormat.OpenXml.Packaging.IPackage`,而不是`System.IO.Packaging.Package`,API界面类似
- `EnumValue<T>`现在用于将结构封箱而不是`System.Enum`。这使得我们可以在不使用反射的情况下对它启用行为
- 为部分添加子部分的方法(例如`AddImagePart`)现在作为新标记接口`ISupportedRelationship<T>`的扩展方法实现
- 部分类型信息枚举(例如`ImagePartType`)不再是枚举,而是一个暴露知名部分类型为结构的静态类。现在任何用于定义新的内容类型/扩展对的方法都可以使用新的`PartTypeInfo`结构调用,该结构将包含必要的信息。
- `OpenXmlPackage.CanSave`现在是一个实例属性 (#1307)
- 删除了`OpenXmlSettings.RelationshipErrorHandlerFactory`和相关类型,并使用内置机制启用此功能
- `IdPartPair`现在是一个只读结构而不是一个类
- 将`PartExtensionProvider`重命名为`IPartExtensionFeature`,并将其接口面积减少到只有两种方法(而不是一个完整的`Dictionary<,>`)。从`OpenXmlPackage`访问此功能的属性已被删除,但在需要时可通过`Features.Get<IPartExtensionFeature>()`访问。
- `OpenXmlPart`/`OpenXmlContainer`/`OpenXmlPackage`和派生类型现在具有内部构造函数(这些具有内部抽象方法,所以很可能外部没有子类)
- `OpenXmlElementList`现在是一个结构,实现了`IEnumerable<OpenXmlElement>`和`IReadOnlyList<OpenXmlElement>`接口(如果可用) (#1429)
- 现在有每个包类型的单独实现`OpenXmlPartReader`(例如`WordprocessingDocumentPartReader`、`SpreadsheetDocumentPartReader`、`PresentationDocumentPartReader`),并且之前的`TypedOpenXmlPartReader`已被删除。 (#1403)
- 除了DocumentFormat.OpenXml.Framework包外,减少了不必要的目标框架 (#1471)
- 修改了某些属性名中的拼写问题 (#1463, #1444)
- `Model3D`现在表示修改后的xml元素标签名`am3d.model3d`(以前为`am3d.model3D`)
- 删除了`DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo`
- 删除了`DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid`
- 删除了未使用的`SchemaAttrAttribute` (#1316)
- 删除了未使用的`ChildElementInfoAttribute` (#1316)
- 删除了`OpenXmlSimpleType.TextValue`。此属性从未打算用于外部 (#1316)
已从SDK的v1版本中移除了过时的验证逻辑(#1316)
从2.x版本中移除了过时的方法(#1316)
从OpenXmlAttribute中移除了可变属性,并将其标记为`readonly`(#1282)
优先使用`Dispose`,移除了`OpenXmlPackage.Close`(#1373)
优先使用`Clone`,移除了`OpenXmlPackage.SaveAs`(#1376)
## [2.20.0]
### 添加了
添加了DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula命名空间
添加了DocumentFormat.OpenXml.Office.Word.Y2023.WordML.Word16DU命名空间
### 修改了
将`OpenXmlSimpleType.TextValue`标记为过时。该属性从未打算供外部使用(#1284)
将`OpenXmlPackage.Package`标记为过时。在未来版本中,这将成为实现细节,且不可访问(#1306)
将`OpenXmlPackage.Close`标记为过时。这将在后续版本中被移除,请使用`Dispose`代替(#1371)
将`OpenXmlPackage.SaveAs`标记为过时,因为它将在未来的版本中被移除(#1378)
### 修复
修复了vbaProject文件的错误文件扩展名(#1292)
修复了ImagePart的错误文件扩展名(#1305)
修复了customXml的错误大小写(#1351)
修复了AddEmbeddedPackagePart,以允许支持各种内容类型的正确扩展名(#1388)
## [2.19.0] - 2022-12-14
### 添加了
.NET 6目标支持修剪(#1243, #1240)
添加了DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData命名空间
添加了DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command命名空间
添加了DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command命名空间
添加了Child RichDataPivotCacheGuid到DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition
### 修复
在可能的情况下移除了反射使用(#1240)
修复了在克隆或创建副本时某些URI可能会更改的问题(#1234)
修复了FlatOpc生成中不会在.NET 6+上读取完整流的问题(#1232)
修复了恢复的链接不会正确加载的问题(#1207)
## [2.18.0] 2022-09-06
### 添加了
添加了DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021命名空间(#1196)
为DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet添加了durableId属性(#1196)
为类型化的元素、部分和包添加了一些基类(#1185)
### 修改了
调整LICENSE.md以符合.NET Foundation要求(#1194)
为内部服务进行了某些更改以提高性能
## [2.17.1] - 2022-06-28
### 移除
移除了预览命名空间DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions,因为该命名空间目前会创建无效文档。
### 修复
恢复了PowerPointCommentPart与PresentationPart之间的关系。
### 弃用
PowerPointCommentPart与PresentationPart之间的关系已被弃用,将在未来的版本中被移除。
## [2.17.0] - 未发布
### 添加了
添加了DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions命名空间(#1151)
添加了DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo命名空间(#1151)
### 修复
将PowerPointCommentPart关系移至SlidePart(#1137)
### 更新
移除了公共API分析器,转而使用EnablePackageValidation(#1154)
## [2.16.0] - 2022-03-14
### 添加了
添加了方法`OpenXmlPart.UnloadRootElement`,当根元素被加载时会将其卸载(#1126)
### 更新
将架构代码生成移至SDK项目,使用C#代码生成器
感谢以下人员的贡献
@f1nzer
## [2.15.0] - 2021-12-16
### 添加了
向`./samples`目录添加了强类型类和Linq-to-XML的示例(#1101, #1087)
在`DocumentFormat.OpenXml.Features`和`DocumentFormat.OpenXml.Linq`中提供了额外的库,以提供一些额外的功能。有关详细信息,请参阅存储库中的文档。
添加了支持获取图像部分类型的扩展方法(#1082)
为新的订阅模型类型和约束添加了生成类和`FileFormatVersions.Microsoft365`(#1097)。
### 修复
修复了更改的MIME类型`model/gltf.binary`的问题(#1069)
DocumentFormat.OpenXml.Office.Drawing.ShapeTree现在仅在Office 2010及以上版本中可用,不再是2007版本。
正确序列化`new CellValue(bool)`值(#1070)
将已知命名空间更新为通过存储库中的源生成器生成(#1092)
关于 `FileFormatVersions` 枚举的一些文档问题
感谢以下人士的贡献
@ThomasBarnekow
@stevenhansen
@JaimeStill
@jnyrup
## [2.14.0] - 2021-10-28
### 添加了
- 添加了针对 Office 2021 类型及其约束的生成类(#1030)
- 在 `OpenXmlPartContainer` 和 `OpenXmlElement` 中添加了 `Features` 属性,以启用按部分或按文档的状态存储
- 为 `XmlPath` 添加了公共构造函数(#1013)
- 添加了富数据类型的部件(#1002)
- 添加了生成唯一段落 ID 的方法(#1000)
感谢以下人士的贡献
@rmboggs
@ThomasBarnekow
## [2.13.1] - 2021-08-17
### 修复
- 修复了一些错误定义的 nullability 注释(#953, #955)
- 修复了在特定情况下创建 `XmlReader` 时会释放 `TextReader` 的问题(#940)
- 修复了文档类型问题(#937)
- 修复了向数据部分添加额外子元素的问题(#934)
- 将一些泛型值文档条目替换为有用的注释(#992)
- 修复了 AddDataPartRelationship 的回归问题(#954)
感谢以下人士的贡献
@ThomasBarnekow
@sorensenmatias
@lklein53
@lindexi
## [2.13.0] - 2021-05-13
### 添加了
- 添加了与 Open Specifications 匹配的 O19 类型(#916)
- 添加了针对 Office 2019 类型及其约束的生成类(#882)
- 添加了 nullability 属性(#840, #849)
- 为 `OpenXmlPartReader` 和 `OpenXmlReader.Create(...)` 添加了重载,以忽略空白(#857)
- 添加了 `HexBinaryValue.TryGetBytes(...)` 和 `HexBinaryValue.Create(byte[])` 来管理字节的编码和解码(#867)
- 在 `IdPartPair` 上实现了 `IEquatable(IdPartPair)`,以修复该处的相等性实现并弃用设置器(#871)
### 修复
- 修复了 `CellValue` 构造函数的序列化,使用不变文化来进行(#903)
- 修复了解析以允许数字单元格值中的指数(#901)
- 修复了涉及 `UniqueAttributeValueConstraint` 时的巨大性能瓶颈(#924)
### 弃用
- 弃用 Office2013.Word.Person.Contact 属性。它不再持久化,并将在未来版本中删除(#912)
感谢以下人士的贡献
@lklein53
@igitur
## [2.12.3] - 2021-02-24
### 修复
- 修复了 `CellValue` 可能对布尔值进行错误验证的问题(#890)
## [2.12.2] - 2021-02-16
### 修复
- 修复了 `OpenSettings.RelationshipErrorHandlerFactory` 会在结果 URI 小于输入时创建无效 XML 的问题(#883)
## [2.12.1] - 2021-01-11
### 修复
- 修复了在 `OpenXmlCompositeElement` 实例上设置属性无法设置为 null 以移除元素的问题(#850)
- 修复了 `OpenXmlElement.RawOuterXml` 以正确设置空值而不会引发异常(#818)
- 允许重写所有格式不正确的 URI,而不考虑目标值(#835)
## [2.12.0] - 2020-12-09
### 添加了
- 添加 `OpenSettings.RelationshipErrorHandlerFactory` 以提供处理格式的 URI 的方法,这些 URI 会破坏恶意链接的文档解析(#793)
- 添加 `OpenXmlCompositeElement.AddChild(OpenXmlElement)` 以按照模式正确顺序添加子元素(#774)
- 用 `SmartTagClean` 和 `SmartTagId` 替换了 `SmtClean` 和 `SmtId`(#747)
- 添加 `OpenXmlValidator.Validate(..., CancellationToken)` 重载以允许更容易地取消在 .NET 4.0+ 上的长期运行验证(#773)
- 为 `CellValue` 添加了 Overloads 以接受 `decimal`、`double` 和 `int` 以及方便它们的解析方法(#782)
- 添加了 `CellType` 的验证,用于数字和日期格式(#782)
- 添加 `OpenXmlReader.GetLineInfo()` 以在底层读取器可用时检索 `IXmlLineInfo`(#804)
### 修复
- 修复了在文档包含 SVG 文件时尝试保存文档为 FlatOPC 会抛出异常的问题(#822)
- 添加 `SchemaAttrAttribute` 属性以实现向后兼容性(#825)
### 移除
- 在 .NET 4.6 版本构建中删除了对 `System.IO.Packaging` 的显式引用(#774)
## [2.11.3] - 2020-07-17
### 修复
- 修复了涉及 `IndexReferenceConstraint` 和 `ReferenceExistConstraint` 时的巨大性能瓶颈(#763)
- 修复了 `CellValue` 在第二次分数中只包含三个最显著数字以修复加载日期的问题(#741)
- 修复了一两个可能导致错误验证错误的验证索引错误(#767)
- 更新内部验证系统,不再使用递归,允许更好的短路操作(#766)
## [2.11.2] - 2020-07-10
### 修复
- 修复了断裂的源链接(#749)
- 确保编译是一致的(#749)
- 从NuGet包中删除了额外的文件(#749)
## [2.11.1] - 2020-07-10
### 修复
- 确保.NET Framework构建可成功通过PEVerify(#744)
- `OpenXmlPartContainer.DeletePart`现在在给定的标识符没有匹配项的情况下不再抛出异常(#740)
- 将过时期员标记为不显示在Intellisense中(#745)
- 修复了`AttributeRequiredConditionToValue`语义约束中的问题,验证可能会在正确输入时失败(#746)
## [2.11.0] - 2020-05-21
### 添加了
- 添加了`FileFormatVersions.2019`枚举(#695)
- 添加了`ChartSpace`和图表元素为新2016命名空间,这允许构建具有“Sunburst”等图表样式的图表部分(#687)。
- 添加了`OpenXmlElementFunctionalExtensions.With(...)`扩展方法,这为在纯函数转换的上下文中构建`OpenXmlElement`实例提供了一种灵活的方法(#679)
- 为枚举类型和值添加了最小Office版本(#707)
- 添加了额外的`CompatSettingNameValues`值:`UseWord2013TrackBottomHyphenation`、`AllowHyphenationAtTrackBottom`和`AllowTextAfterFloatingTableBreak`(#706)
- 根据MS-OI29500 2.1.1783-1799将`gfxdata`属性添加到Arc、Curve、Line、PolyLine、Group、Image、Oval、Rect和RoundRect形状复杂类型中(#709)
- 添加了`OpenXmlPartContainer.TryGetPartById`以启用在不存在的情况下检索子部分,而不抛出异常(#714)
- 添加了`OpenXmlPackage.StrictRelationshipFound`属性,该属性指示此包是否包含从Strict转换的过渡关系(#716)
### 修复
- 自定义派生部分没有从其父部分继承已知部分,导致添加部分失败(#722)
### 修改了
- 将`OpenXmlAttribute`中的属性设置器标记为过时,因为结构不应该有可变状态(#698)
## [2.10.1] - 2020-02-28
### 修复
- 确保可用性属性在将外部XML初始化为`OpenXmlElement`时可用(#684,#692)
- 一些文档错误(#681)
- 移除了在某些条件下验证元素会导致非线程安全的分配状态(#686)
- 正确插入强类型元素在已知非强类型元素之前(#690)
## [2.10.0] - 2020-01-10
### 添加了
- 添加了初始Office 2016支持,包括`FileFormatVersion.Office2016`、`ExtendedChartPart`和其他新架构元素(#586)
- 添加.NET Standard 2.0目标(#587)
- 包含符号支持以进行调试(#650)
- 从`XmlPath`中暴露`IXmlNamespaceResolver`而不是格式化的字符串列表以暴露命名空间/前缀映射(#536)
- 在`OpenXmlComparableSimpleValue`上实现了`IComparable<T>`和`IEquatable<T>`,以允许无装箱的比较(#550)
- 添加`OpenXmlPackage.RootPart`以轻松访问任何包上的根部分(#661)
### 修改了
- 更新到System.IO.Packaging的v4.7.0,其中包含许多性能修复(#660)
- 合并了元素子/属性的数据以减少重复(#540,#547,#548)
- 将元素子约束的不透明二进制数据替换为声明性模型(#603)
- 在可能的情况下进行了大量的性能修复以最小化分配
- 大小减少20%,从5.5MB减少到4.3MB
- 验证子系统经历了彻底的重设计。这可能导致错误报告的变化。
### 修复
- 修复了一些文档不一致之处(#582)
- 修复了`ToFlatOpcDocument`、`ToFlatOpcString`、`FromFlatOpcDocument`和`FromFlatOpcString`以正确处理替代格式导入部分或“altChunk parts”(#659)
## [2.9.1] - 2019-03-13
### 修改了
- 添加了一个绕过.NET Native编译器问题的解决方案,该问题不支持使用包含自动实现的属性的struct调用`Marshal.SizeOf<T>`(#569)
- 修复了一个文档错误(#528)
## [2.9.0] - 2018-06-08
### 添加了
- `ListValue`现在实现了`IEnumerable<T>`(#385)
- 添加了一个`WebExtension.Frozen`并废弃了拼写错误`Fronzen`属性(#460)
- 添加了`OpenXmlPackage.CanSave`属性,该属性指示平台是否支持在不关闭包的情况下保存(#468)
- 简单类型(除`EnumValue`和`ListValue`外)现在实现了`IComparable<T>`和`IEquatable<T>`(#487)
### 修改了
- 删除了在验证器中携带的、当未使用时保留包的状态 (#390)
- 改进了 `EnumSimpleType` 的解析,并减少了未来的分配和缓存使用 (#408)
- 修复了文档中的若干拼写错误 (#462)
- 当在 .NET Framework 上调用 `OpenXmlPackage.Save` 时,现在将包刷新到流中 (#468)
- 修复了执行严格的属性转换时的竞态条件 (#480)
- 验证使用的模式数据使用更紧凑的格式,导致 dll 尺寸减小,并提高了加载性能 (#482, #483)
- 一些 API 被标记为过时,因为它们有简单的解决方案,将在下一个主要更改中删除
- 修复了一些包含 Office 2007 的约束值,即使它仅支持在后续版本中也是如此
- 更新了 `System.IO.Packaging` 到 4.5.0,这修复了 Xamarin 平台上的一些问题,并最大程度减少了依赖于 .NET Framework
## [2.8.1] - 2018-01-03
### 修改了
- 修正了包许可证文件引用,以显示更新的 MIT 许可证
## [2.8.0] - 2017-12-28
### 添加了
- 默认运行时指令以更好地支持 .NET Native。
### 修改了
- 修复了部分保存时使用 UTF8 编码但无字节顺序标记,这导致某些渲染器无法打开生成的文档
- 修复了在打开包时遇到错误时抛出的异常,以确保跨平台的一致性。
- 修复了在 Mono 平台使用 System.IO.Packaging NuGet 包(Xamarin 等)创建文档时的问题。
- 修复了自动保存为 false 时的包手动保存问题。
- 修复了模式约束数据和跨平台标准化序列化。
- 升级到 `System.IO.Packaging` 版本 4.4.0,该版本修复了在打开包时与 .NET Framework 的一些一致性问题。
## [2.7.2] - 2017-06-06
### 添加了
- 包现在支持 .NET 3.5 和 .NET 4.0,除了 .NET Standard 1.3 和 .NET Framework 4.6
### 修改了
- 修复了未设置程序集版本号的问题。
## [2.7.1] - 2017-01-31
### 修改了
- 修复了在强制实施强名称的 .NET Framework 上调用验证引发崩溃的问题。
## [2.7.0] - 2017-01-24
### 添加了
- SDK 现在支持 .NET Standard 1.3
### 修改了
- 移至使用 System.IO.Packaging(.NET Standard 1.3 和 WindowsBase,.NET 4.5)。
- 清理了项目构建系统以使用 .NET CLI。
## [2.6.1] - 2016-01-15
### 添加了
- 添加了数百个 XUnit 测试。现在总共有 1333 个测试。它们大约需要 20 分钟才能运行,所以请耐心等待。
## [2.6.0] - 2015-06-29
### 添加了
- 集成了替换 `System.IO.Packaging` 来修复 WindowsBase 实现中发现的某些严重(但异常)的错误。
[3.0.1]: https://github.com/dotnet/Open-XML-SDK/compare/v3.0.0...v3.0.1
[3.0.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.20.0...v3.0.0
[2.20.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.19.0...v2.20.0
[2.19.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.18.0...v2.19.0
[2.18.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.17.1...v2.18.0
[2.17.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.17.0...v2.17.1
[2.17.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.16.0...v2.17.0
[2.16.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.15.0...v2.16.0
[2.15.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.14.0...v2.15.0
[2.14.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.14.0-beta1...v2.14.0
[2.13.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.13.0...v2.13.1
[2.13.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.13.0...v2.13.0
[2.12.3]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.3...v2.12.1
[2.12.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.1...v2.12.0
[2.12.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.12.0...v2.11.3
[2.11.3]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.3...v2.11.2
[2.11.2]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.2...v2.11.1
[2.11.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.1...v2.11.0
[2.11.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.11.0...v2.10.1
[2.10.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.10.1...v2.10.0
[2.10.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.10.0...v2.9.1
[2.9.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.9.1...v2.9.0
[2.9.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.9.0...v2.8.1
[2.8.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.8.1...v2.8.0
[2.8.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.8.0...v2.7.2
[2.7.2]: https://github.com/dotnet/Open-XML-SDK/compare/v2.7.1...v2.7.2
[2.7.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.7.0...v2.7.1
[2.7.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.6.1...v2.7.0
[2.6.1]: https://github.com/dotnet/Open-XML-SDK/compare/v2.6.0...v2.6.1
[2.6.0]: https://github.com/dotnet/Open-XML-SDK/compare/v2.5.0...v2.6.0