DocumentFormat.OpenXml.Features 3.1.0

dotnet add package DocumentFormat.OpenXml.Features --version 3.1.0                
NuGet\Install-Package DocumentFormat.OpenXml.Features -Version 3.1.0                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="DocumentFormat.OpenXml.Features" Version="3.1.0" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add DocumentFormat.OpenXml.Features --version 3.1.0                
#r "nuget: DocumentFormat.OpenXml.Features, 3.1.0"                
#r 指令可在 F# Interactive 和 Polyglot Notebooks 中使用。将其复制到交互式工具或脚本的源代码中以引用包。
// Install DocumentFormat.OpenXml.Features as a Cake Addin
#addin nuget:?package=DocumentFormat.OpenXml.Features&version=3.1.0

// Install DocumentFormat.OpenXml.Features as a Cake Tool
#tool nuget:?package=DocumentFormat.OpenXml.Features&version=3.1.0                

Open XML 工具包

[! 注意 ]

v3.0.0 进行了重构并解决了部分技术债务,同时尽可能保持了源兼容性。您应该能够在仅作出少量更改的情况下更新您的包并重新编译。然而,二进制兼容性不是目标,并且将破坏某些有文档记录的更改。引入此类更改的 PR 被标记为 breaking-change 标签,并被添加到一个清单中,以帮助迁移到 v3.0.0。

请参阅v3.0.0里程碑以获取包含的问题和PR。有关讨论,请加入此问题

[重要] 自2024年4月2日起,CI馈送URL已更改。如果正在使用CI构建,请更新到新URL。

Downloads Build Status Backend Status

Open XML SDK 提供了用于处理 Office Word、Excel 和 PowerPoint 文档的工具。它支持以下场景:

  • 高性能生成文档处理文档、电子表格和演示文稿。
  • 文档修改,例如添加、更新和删除内容及元数据。
  • 使用正则表达式进行内容搜索和替换。
  • 将文件分割(撕碎)成多个文件,或将多个文件合并成一个文件。
  • 更新 Word/PowerPoint 中图表的缓存数据和嵌入式电子表格。

目录

Open XML SDK 的官方发布 NuGet 包位于 NuGet.org

软件包 下载 预发布版
DocumentFormat.OpenXml.Framework NuGet NuGet
DocumentFormat.OpenXml NuGet NuGet
DocumentFormat.OpenXml.Linq NuGet NuGet
DocumentFormat.OpenXml.Features NuGet NuGet

每日构建

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>

有关最新更改,请参阅更改日志

框架支持

该包目前支持以下目标

  • .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

如果你有疑问

  • 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 MarketPlace下载。
  • ShapeCrawler:该库在OpenXml SDK之上提供了一种简化的对象模型,用于操作PowerPoint文档。
  • OOXML Validator:VS Code扩展程序,用于验证Office Open XML文件。在VS Code扩展标签中搜索“OOXML”,或从VS Code MarketPlace下载。

如何做出贡献?

我们欢迎贡献!全世界有很多人帮助改进了这个项目。

报告安全问题和安全漏洞

应通过电子邮件私下报告安全问题和漏洞,发送至微软安全响应中心(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 Standard 的更多信息。

NuGet 包 (3)

显示依赖于 DocumentFormat.OpenXml.Features 的前 3 个 NuGet 包

软件包 下载
Archsheerary

存档电子表格库

TJC.Cyclops.OpenXml

openxml 相关封装

ExcelXmlPowerPack

包描述

GitHub 仓库

此包未用于任何流行的 GitHub 仓库。

版本 下载 最后更新
3.1.0 676 7/30/2024
3.0.2 13,876 3/14/2024
3.0.1 3,765 1/9/2024
3.0.0 38,426 11/15/2023
3.0.0-beta0003 361 9/5/2023
3.0.0-beta0002 242 6/16/2023
2.20.0 90,760 4/6/2023
2.20.0-beta0012 160 4/6/2023
2.19.0 31,072 12/14/2022
2.18.0 70,441 9/7/2022
2.17.1 18,244 6/30/2022
2.16.0 9,610 3/15/2022
2.15.0 4,017 1/4/2022

# 更新日志

本项目所有显著变更都将记录在此文件中。

格式基于 [保持更新日志](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`)

## [3.0.0] - 2023-11-15

### 添加

- 如果使用路径或流构造,现在可以将包保存到.NET Core和.NET 5+ (#1307)。
- 现在支持格式错误的URI(例如具有像 `mailto:person@` 这样的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` 的类型更改为与具有类似API表面的 `DocumentFormat.OpenXml.Packaging.IPackage` 一样的 `System.IO.Packaging.Package`
- `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)
- 为每个包类型(例如 `WordprocessingDocumentPartReader`、`SpreadsheetDocumentPartReader`、`PresentationDocumentPartReader`)现在都可用 `OpenXmlPartReader` 的独立实现,并且已删除以前的 `TypedOpenXmlPartReader`。(#1403)
- 减少了除此之外的包的无关目标框架 (#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)
- 替换 `OpenXmlPackage.Close` 为 `Dispose`(#1373)
- 替换 `OpenXmlPackage.SaveAs` 为 `Clone`(#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 命名空间
- 在 DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition 中添加了 Child RichDataPivotCacheGuid

### 修复

- 尽可能删除了反射(#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 基金会的要求(#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)

### 更新

- 用 EnablePackageValidation 代替公共 API 分析器(#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)。

### 修复

- 修复了 `model/gltf.binary` 的 MIME 类型更改问题(#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)
- 为 Rich Data 类型添加了部分(#1002)
- 添加了生成唯一段落 ID 的方法(#1000)

感谢以下人的贡献

@rmboggs
@ThomasBarnekow

## [2.13.1] - 2021-08-17

### 修复

- 修复了一些定义错误的可空性注释(#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)
- 添加了可空性属性(#840, #849)
- 为 `OpenXmlPartReader` 和 `OpenXmlReader.Create(...)` 添加了忽略空白的重载(#857)
- 为 `HexBinaryValue.TryGetBytes(...)` 和 `HexBinaryValue.Create(byte[])` 添加了管理字节编码和解码的方法(#867)
- 在 `IdPartPair` 上实现了 `IEquatable`,以修复那里的平等实现并将设置器弃用(#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` 以正确设置 null 值而不会抛出异常(#818)
- 允许重写所有格式错误的 URI,无论目标值如何(#835)

## [2.12.0] - 2020-12-09

### 添加

- 为处理格式错误的链接导致解析文档失败的恶意 URI,添加了 `OpenSettings.RelationshipErrorHandlerFactory`(#793)
- 为按照模式添加子元素添加了 `OpenXmlCompositeElement.AddChild(OpenXmlElement)`(#774)
- 用 `SmartTagClean` 和 `SmartTagId` 代替了 `SmtClean` 和 `SmtId`(#747)
- 为 `OpenXmlValidator.Validate(..., CancellationToken)` 添加了重载,以便在 .NET 4.0+ 上更容易取消长时间运行的验证(#773)
- 为 `CellValue` 添加了重载以接受 `decimal`、`double` 和 `int`,以及解析它们的便利方法(#782)
- 为数字和日期格式添加了 `CellType` 的验证(#782)
- 为检索底层读取器的 `IXmlLineInfo`(如果有)添加了 `OpenXmlReader.GetLineInfo()`(#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 为 Arc、Curve、Line、PolyLine、Group、Image、Oval、Rect、RoundRect 形状复杂数据类型添加了 gfxdata 属性 (#709)
- 添加了 `OpenXmlPartContainer.TryGetPartById` 以在不存在子部分时不抛出异常以检索子部分 (#714)
- 添加了 `OpenXmlPackage.StrictRelationshipFound` 属性,该属性指示此包是否包含从严格转换的过渡关系 (#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` 和 `IEquatable`,以允许无装箱的比较 (#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 编译器问题的修正方案,该编译器不支持使用包含自动实现的属性的结构的 `Marshal.SizeOf` 调用 (#569)
- 修正了文档错误 (#528)

## [2.9.0] - 2018-06-08

### 添加

- `ListValue` 现在实现了 `IEnumerable` (#385)
- 添加了 `WebExtension.Frozen` 属性,并废弃了拼写错误的 `Fronzen` 属性 (#460)
- 添加了 `OpenXmlPackage.CanSave` 属性,表示平台是否支持在不关闭包的情况下保存 (#468)
- 简单类型(除 `EnumValue` 和 `ListValue`)现在实现了 `IComparable` 和 `IEquatable` (#487)

### 更改

- 删除了在未使用时保留包的验证器中的状态 (#390)
- `EnumSimpleType` 解析得到改进,使用了更少的分配和缓存供未来使用 (#408)
- 修复了文档中的多个拼写错误 (#462)
- 在 .NET 框架中调用 `OpenXmlPackage.Save` 时,现在将包刷新到流中 (#468)
- 修复了在执行严格属性转换时出现的竞态条件 (#480)
- 用于验证的模式数据使用更加紧凑的格式,导致 dll 大小减小并且加载性能提高 (#482, #483)
- 许多 API 被标记为已弃用,因为这些 API 有简单的解决方案,将在下一个主要更改中删除
- 修复了包含 Office 2007 的某些验证约束值,即使它在较后版本中才受支持 (#390)
- 将 `System.IO.Packaging` 更新到 4.5.0,解决了 Xamarin 平台上的一些问题,并最小化了 .NET 框架的依赖性 (#390)

## [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 框架在打开包方面的一些一致性 (#390)

## [2.7.2] - 2017-06-06

### 添加

- 除了 .NET Standard 1.3 和 .NET Framework 4.6 外,包现在还支持 .NET 3.5 和 .NET 4.0

### 更改

- 修复了在程序集中未设置版本号的问题

## [2.7.1] - 2017-01-31

### 更改

- 修复了在对外强制进行强命名时在 .NET 框架上调用验证时发生的崩溃 (#390)

## [2.7.0] - 2017-01-24

### 添加

- SDK 现在支持 .NET Standard 1.3

### 更改

- 从 dotnet/corefx 迁移到使用 System.IO.Packaging,用于 .NET Standard 1.3,以及 WindowsBase 用于 .NET 4.5 (#390)
- 清理了项目构建系统,以使用 .NET CLI

## [2.6.1] - 2016-01-15

### 添加

- 添加了数百个 XUnit 测试。现在总共有 1333 个测试,它们大约需要 20 分钟运行,请耐心等待 (#390)

## [2.6.0] - 2015-06-29

### 添加

- 集成了一种替代的 `System.IO.Packaging`,它修复了在 WindowsBase 实现中发现的某些严重(但异常)的错误 (#390)

[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