Open XML SDK 的最近更新

[3.0.0] - 2023-11-15

添加

  • 如果包是使用路径或流 (#1307) 构造的,现在可以保存在 .NET Core 和 .NET 5+ 上。
  • 包现在可支持格式不正确的 URI (,例如与 URI 的关系,例如 mailto:person@)
  • 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.PackageDocumentFormat.OpenXml.Packaging.IPackage更改为 ,System.IO.Packaging.Package而不是使用类似的 API 图面
  • EnumValue<T> 现在用于装箱结构,而不是 System.Enum。 这允许我们启用其行为,而无需诉诸反射
  • 部件上用于添加子部件的方法 (即 AddImagePart) 现在作为新标记接口的扩展方法实现 ISupportedRelationship<T>
  • 部件类型信息枚举 (即 ImagePartType) 不再是枚举,而是将已知部件类型公开为结构的静态类。 现在,任何定义新内容类型/扩展对的方法都可以使用包含必要信息的新 PartTypeInfo 结构调用。
  • OpenXmlPackage.CanSave 现在是实例属性 (#1307)
  • 删除 OpenXmlSettings.RelationshipErrorHandlerFactory 了和关联的类型,并替换为启用此功能的内置机制
  • IdPartPair 现在是只读结构,而不是类
  • 重命名 PartExtensionProviderIPartExtensionFeature ,并将其外围应用缩小到只有两个方法 (而不是完整 Dictionary<,>) 。 用于访问此 off 的属性 OpenXmlPackage 已被删除,但可以根据需要通过 Features.Get<IPartExtensionFeature>() 访问。
  • OpenXmlPart/OpenXmlContainer/OpenXmlPackage 和派生类型现在具有内部构造函数, (这些构造函数具有内部抽象方法,因此很可能没有在外部进行子类化)
  • OpenXmlElementList现在是实现 和 IReadOnlyList<OpenXmlElement> (如果可用)的结构 IEnumerable<OpenXmlElement> (#1429)
  • 现在,每种包类型 ((即 WordprocessingDocumentPartReaderSpreadsheetDocumentPartReaderPresentationDocumentPartReader 、) )的单个实现OpenXmlPartReader可用,并且以前的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)
  • 删除 OpenXmlPackage.Close 了 # Dispose A0#1373)
  • 删除 OpenXmlPackage.SaveAs 了 # Clone A0#1376)

[2.20.0] - 2023-04-05

添加

  • 添加了 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)

Fixed

  • 修复了 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

Fixed

  • 尽可能删除反射用法 (#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 (#1196 添加了 durableId 属性)
  • 为类型化元素、部件和包添加了几个基类 (#1185)

更改项

  • 调整 LICENSE.md 以符合 .NET Foundation 要求 (#1194)
  • 为内部服务提供更好的性能而进行的杂项更改

[2.17.1] - 2022-06-28

已删除

  • 删除了预览命名空间 DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions,因为此命名空间当前将创建无效文档。

Fixed

  • 已将 PowerPointCommentPart 关系还原到 PresentationPart。

不推荐使用

  • PowerPointCommentPart 与 PresentationPart 之间的关系已弃用,并将在未来版本中删除。

[2.17.0] - 未发布

添加

  • 添加了 DocumentFormat.OpenXml.Office.Comments.Y2020.Reactions 命名空间 (#1151)
  • 添加了 DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotVersionInfo 命名空间 (#1151)

Fixed

  • 已将 PowerPointCommentPart 关系移动到 SlidePart (#1137)

更新日期

  • 删除了公共 API 分析器,转而支持 EnablePackageValidation (#1154)

[2.16.0] - 2022-03-14

添加

  • 添加了方法 OpenXmlPart.UnloadRootElement ,该方法将在加载根元素时卸载根元素 (#1126)

更新日期

  • 架构代码生成已使用 C# 代码生成器移动到 SDK 项目

[2.15.0] - 2021-12-16

添加

  • 在目录中添加了强类型类和 Linq-to-XML ./samples 的示例 (#1101, #1087)
  • 为 和 DocumentFormat.OpenXml.Linq中的DocumentFormat.OpenXml.Features一些附加功能提供其他库。 有关更多详细信息,请参阅存储库中的文档。
  • 添加了扩展方法以支持获取映像部件类型 (#1082)
  • 为新的订阅模型类型和约束添加了生成的类和 FileFormatVersions.Microsoft365 (#1097) 。

Fixed

  • 修复了已更改 mime 类型 model/gltf.binary (#1069) 的问题
  • DocumentFormat.OpenXml.Office.Drawing.ShapeTree 现在仅在 Office 2010 及更高版本中可用,而不适用于 2007。
  • 正确序列化 new CellValue(bool) 值 (#1070)
  • 更新了通过存储库内源生成器 (#1092) 生成的已知命名空间
  • 有关 FileFormatVersions 枚举的一些文档问题

[2.14.0] - 2021-10-28

添加

  • 为Office 2021类型和约束添加了生成的类 (#1030)
  • OpenXmlPartContainerOpenXmlElement 添加了Features属性,以启用每个部件或每个文档的状态存储
  • XmlPath (#1013) 添加了公共构造函数
  • 为富数据类型 (#1002 添加了部件)
  • 添加了生成唯一段落 ID (#1000) 的方法

[2.13.1] - 2021-08-17

Fixed

  • 修复了错误定义的一些可为空性注释 (#953、 #955)
  • 修复了在某些情况下创建 XmlReader 时会释放 TextReader 的问题 (#940)
  • 修复了文档类型 (#937)
  • 修复了向数据部件添加其他子级的问题 (#934)
  • 已将一些作为泛型值的文档条目替换为有用的注释 (#992)
  • 修复了 AddDataPartRelationship (#954) 中的回归

[2.13.0] - 2021-05-13

添加

  • 其他 O19 类型,以匹配开放规范 (#916)
  • 为 Office 2019 类型和约束添加了生成的类 (#882)
  • 添加了可为空属性 (#840, #849)
  • OpenXmlPartReaderOpenXmlReader.Create(...) 添加了重载以忽略空格 (#857)
  • 添加了 HexBinaryValue.TryGetBytes(...)HexBinaryValue.Create(byte[]) 以管理字节的编码和解码 (#867)
  • 在 上IdPartPair实现IEquatable<IdPartPair>以修复那里的相等实现和过时的资源库 (#871)

Fixed

  • 修复了构造函数序列化以 CellValue 使用固定区域性 (#903)
  • 修复了分析以允许数值单元格值的指数 (#901)
  • 修复了涉及 时 UniqueAttributeValueConstraint 的巨大性能瓶颈 (#924)

不推荐使用

  • 已弃用 Office2013。Word。Person.Contact 属性。 它不再保留,并将在未来版本 (#912)

[2.12.3] - 2021-02-24

Fixed

  • 修复了布尔值验证错误的问题 CellValue (#890)

[2.12.2] - 2021-02-16

Fixed

  • 修复了以下问题: OpenSettings.RelationshipErrorHandlerFactory 如果生成的 URI 小于输入 (#883)

[2.12.1] - 2021-01-11

Fixed

  • 修复了无法将实例上的 OpenXmlCompositeElement 属性设置为 null 以删除元素 (#850)
  • 修复了 OpenXmlElement.RawOuterXml 正确设置 null 值而不引发 (#818)
  • 允许重写所有格式不正确的 URI,而不考虑目标值 (#835)

[2.12.0] - 2020-12-09

添加

  • 添加了 OpenSettings.RelationshipErrorHandlerFactory ,提供了一种处理 URI 的方法,这些 URI 中断了格式不正确的链接分析文档 (#793)
  • 添加了 OpenXmlCompositeElement.AddChild(OpenXmlElement) 以按架构的正确顺序添加子级 (#774)
  • 添加了 SmartTagCleanSmartTagId 取代 SmtClean 了 和 SmtId (#747)
  • 添加了 OpenXmlValidator.Validate(..., CancellationToken) 替代以允许在 .NET 4.0+ (#773 上更轻松地取消长时间运行的验证)
  • 添加了 的 CellValue 重载以采用 decimaldoubleint,以及用于分析它们的便捷方法 (#782)
  • 添加了对 CellType 数字和日期格式的验证 (#782)
  • 添加了 OpenXmlReader.GetLineInfo() 检索 IXmlLineInfo 基础读取器(如果可用) (#804)

Fixed

  • 修复了尝试将文档另存为 FlatOPC(如果文档包含 SVG 文件 ) (#822)
  • 为向后兼容性添加了 SchemaAttrAttribute 属性 (#825)

已删除

  • System.IO.Packaging删除了对 .NET 4.6 内部版本 (#774)

[2.11.3] - 2020-07-17

Fixed

  • 修复了涉及 和 ReferenceExistConstraint 时的IndexReferenceConstraint大规模性能瓶颈 (#763)
  • 修复为 CellValue 在秒分数上仅包含三个最有符号的数字,以更正问题加载日期 (#741)
  • 修复了可能导致错误验证错误的几个验证索引错误 (#767)
  • 更新了内部验证系统,使其不使用递归,从而实现更好的短路 (#766)

[2.11.2] - 2020-07-10

Fixed

  • 修复了断开的源链接 (#749)
  • 确保编译是确定性的 (#749)
  • 删除了 NuGet 包 (#749) 中的额外文件

[2.11.1] - 2020-07-10

Fixed

  • 确保.NET Framework生成通过 PEVerify (#744)
  • OpenXmlPartContainer.DeletePart 如果给定的标识符 (#740 不匹配,则不再引发异常)
  • 将过时的成员标记为不显示 Intellisense (#745)
  • 修复了语义约束的问题 AttributeRequiredConditionToValue :验证在正确的输入时可能会失败 (#746)

[2.11.0] - 2020-05-21

添加

  • 添加了 FileFormatVersions.2019 枚举 (#695)
  • 为新的 2016 命名空间添加了 ChartSpace 和 图表元素。 这允许连接部分使用图表样式(如“Sunburst” (#687) )构建图表部件。
  • 添加了 OpenXmlElementFunctionalExtensions.With(...) 扩展方法,为在纯函数转换的上下文中构造 OpenXmlElement 实例提供了灵活的方法 (#679)
  • 添加了枚举类型和值的最低 Office 版本 (#707)
  • 添加了其他 CompatSettingNameValues 值: UseWord2013TrackBottomHyphenationAllowHyphenationAtTrackBottomAllowTextAfterFloatingTableBreak (#706)
  • 按 MS-OI29500 2.1.1783-1799 (#709) ,向 Arc、Curve、Line、PolyLine、Group、Image、Oval、Rect 和 RoundRect 形状复杂类型添加了 gfxdata attribue
  • 添加了 OpenXmlPartContainer.TryGetPartById 以启用子部件检索(如果不存在) (#714)
  • 添加了 OpenXmlPackage.StrictRelationshipFound 指示此包是否包含从 Strict (#716 转换的过渡关系)

Fixed

  • 自定义派生部件未从其父级继承已知部件,导致添加部件时失败 (#722)

更改项

  • 将 中的属性资源库 OpenXmlAttribute 标记为已过时,因为结构不应具有可变状态 (#698)

[2.10.1] - 2020-02-28

Fixed

  • 使用外部 XML 初始化时 OpenXmlElement 确保属性可用 (#684, #692)
  • 某些文档错误 (#681)
  • 删除了在特定条件下验证元素的非线程安全状态 (#686)
  • 在非强类型 (#690 的已知元素之前正确插入强类型元素)

[2.10.0] - 2020-01-10

添加

  • 添加了初始 Office 2016 支持,包括 FileFormatVersion.Office2016ExtendedChartPart 和其他新架构元素 (#586)
  • 添加了 .NET Standard 2.0 目标 (#587)
  • 包含的符号支持调试 (#650)
  • IXmlNamespaceResolver公开自 XmlPath 而不是格式化字符串列表,以公开命名空间/前缀映射 (#536)
  • 实现 IComparable<T>IEquatable<T> 启用 OpenXmlComparableSimpleValue 以允许在没有装箱的情况下进行比较 (#550)
  • 添加了 OpenXmlPackage.RootPart 以轻松访问任何包上的根部件 (#661)

更改项

  • 已更新到 System.IO.Packaging 的 v4.7.0,它带来了许多性能修复 (#660)
  • 合并元素子级/属性的数据以减少重复 (#540, #547, #548)
  • 将元素子约束的不透明二进制数据替换为声明性模型 (#603)
  • 一些性能修复,以尽可能最大程度地减少分配
  • 大小从 5.5mb 减少到 4.3mb 20%
  • 验证子系统经过了彻底的重新设计。 这可能会导致更改所报告的错误。

Fixed

  • 修复了一些文档不一致问题 (#582)
  • 修复了 ToFlatOpcDocumentToFlatOpcStringFromFlatOpcDocumentFromFlatOpcString 以正确处理可选格式导入部件或“altChunk 部件” (#659)

[2.9.1] - 2019-03-13

更改项

  • 为不支持使用包含自动实现属性 (#569 的结构调用Marshal.SizeOf<T>的.NET Native编译器问题添加了解决方法)
  • 修复了文档错误 (#528)

[2.9.0] - 2018-06-08

添加

  • ListValue 现在实现 IEnumerable<T> (#385)
  • WebExtension.Frozen添加了 和 已过时拼写错误的Fronzen属性 (#460)
  • 添加了一个 OpenXmlPackage.CanSave 属性,该属性指示平台是否支持在不关闭包的情况下保存 (#468)
  • 简单类型 (,ListValue) EnumValue 现在实现 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 编码但无字节顺序标记的部件保存问题。 这导致某些呈现器无法打开生成的文档。
  • 修复了打开包时遇到错误时引发的异常,以便跨平台保持一致。
  • 修复了在创建文档时使用 System.IO.Packaging NuGet 包 (Xamarin 等) 的 Mono 平台上出现的问题。
  • 修复了自动保存为 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

更改项

  • 已从 dotnet/corefx for .NET Standard 1.3 和 WindowsBase for .NET 4.5 迁移到使用 System.IO.Packaging。
  • 已清理项目生成系统以使用 .NET CLI。

[2.6.1] - 2016-01-15

添加

  • 添加了数百个 XUnit 测试。 现在共有 1333 个测试。 它们大约需要 20 分钟才能运行,所以要有耐心。

[2.6.0] - 2015-06-29

添加

  • 合并了一个替代项 System.IO.Packaging ,修复了 WindowsBase 实现中发现的一些严重 (但异常) bug