Open XML SDK Versions Save

Open XML SDK by Microsoft

v3.0.2

2 months ago

Fixed

  • Fixed issue where temp files were shareable and not deleted on close (#1658)

v3.0.1

4 months ago

Fixed

  • Fixed issue where document type would not be correct unless content type was checked first (#1625)
  • Added check to only seek on packages where it is supported (#1644)
  • If a malformed URI is encountered, the exception is now the same as v2.x (OpenXmlPackageException with an inner UriFormatException) (#1644)

v3.0.0

6 months ago

Added

  • Packages can now be saved on .NET Core and .NET 5+ if constructed with a path or stream (#1307).
  • Packages can now support malformed URIs (such as relationships with a URI such as mailto:person@)
  • Introduce equality comparers for OpenXmlElement (#1476)
  • IFeatureCollection can now be enumerated and has a helpful debug view to see what features are registered (#1452)
  • Add mime types to part creation (#1488)
  • DocumentFormat.OpenXml.Office.PowerPoint.Y2023.M02.Main namespace
  • DocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main namespace
  • DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 namespace

Changed

  • When validation finds incorrect part, it will now include the relationship type rather than a class name
  • IDisposableFeature is now a part of the framework package and is available by default on a package or part.

Breaking Changes

  • .NET Standard 1.3 is no longer a supported platform. .NET Standard 2.0 is the lowest .NET Standard supported.
  • Core infrastructure is now contained in a new package DocumentFormat.OpenXml.Framework. Typed classes are still in DocumentFormat.OpenXml. This means that you may reference DocumentFormat.OpenXml and still compile the same types, but if you want a smaller package, you may rely on just the framework package.
  • Changed type of OpenXmlPackage.Package to DocumentFormat.OpenXml.Packaging.IPackage instead of System.IO.Packaging.Package with a similar API surface
  • EnumValue<T> now is used to box a struct rather than a System.Enum. This allows us to enable behavior on it without resorting to reflection
  • Methods on parts to add child parts (i.e. AddImagePart) are now implemented as extension methods off of a new marker interface ISupportedRelationship<T>
  • Part type info enums (i.e. ImagePartType) is no longer an enum, but a static class to expose well-known part types as structs. Now any method to define a new content-type/extension pair can be called with the new PartTypeInfo struct that will contain the necessary information.
  • OpenXmlPackage.CanSave is now an instance property (#1307)
  • Removed OpenXmlSettings.RelationshipErrorHandlerFactory and associated types and replaced with a built-in mechanism to enable this
  • IdPartPair is now a readonly struct rather than a class
  • Renamed PartExtensionProvider to IPartExtensionFeature and reduced its surface area to only two methods (instead of a full Dictionary<,>). The property to access this off of OpenXmlPackage has been removed, but may be accessed via Features.Get<IPartExtensionFeature>() if needed.
  • OpenXmlPart/OpenXmlContainer/OpenXmlPackage and derived types now have internal constructors (these had internal abstract methods so most likely weren't subclassed externally)
  • OpenXmlElementList is now a struct that implements IEnumerable<OpenXmlElement> and IReadOnlyList<OpenXmlElement> where available (#1429)
  • Individual implementations of OpenXmlPartReader are available now for each package type (i.e. WordprocessingDocumentPartReader, SpreadsheetDocumentPartReader, PresentationDocumentPartReader), and the previous TypedOpenXmlPartReader has been removed. (#1403)
  • Reduced unnecessary target frameworks for packages besides DocumentFormat.OpenXml.Framework (#1471)
  • Changed some spelling issues for property names (#1463, #1444)
  • Model3D now represents the modified xml element tag name am3d.model3d (Previously am3d.model3D)
  • Removed DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.PivotCacheHasRichValuePivotCacheRichInfo
  • Removed DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData.RichDataPivotCacheGuid
  • Removed unused SchemaAttrAttribute (#1316)
  • Removed unused ChildElementInfoAttribute (#1316)
  • Removed OpenXmlSimpleType.TextValue. This property was never meant to be used externally (#1316)
  • Removed obsolete validation logic from v1 of the SDK (#1316)
  • Removed obsoleted methods from 2.x (#1316)
  • Removed mutable properties on OpenXmlAttribute and marked as readonly (#1282)
  • Removed OpenXmlPackage.Close in favor of Dispose (#1373)
  • Removed OpenXmlPackage.SaveAs in favor of Clone (#1376)

v3.0.0-beta3

8 months ago

Added

  • Introduce equality comparers for OpenXmlElement (#1476)
  • IFeatureCollection can now be enumerated and has a helpful debug view to see what features are registered (#1452)
  • Add mime types to part creation (#1488)

Breaking changes

  • Reduced unnecessary target frameworks for packages besides DocumentFormat.OpenXml.Framework (#1471)
  • Changed some spelling issues for property names (#1463, #1444)

v3.0.0-DONOTUSE9

9 months ago

DO NOT USE THIS RELEASE

v3.0.0-beta2

11 months ago

Breaking Changes

  • OpenXmlElementList is now a struct that implements IEnumerable<OpenXmlElement> and IReadOnlyList<OpenXmlElement> (where available)
  • Individual implementations of OpenXmlPartReader are available now for each package type (i.e. WordprocessingDocumentPartReader, SpreadsheetDocumentPartReader, PresentationDocumentPartReader), and the previous TypedOpenXmlPartReader has been removed.

v3.0.0-beta1

1 year ago

Added

  • Packages can now be saved on .NET Core and .NET 5+ if constructed with a path or stream (#1307).
  • Packages can now support malformed URIs (such as relationships with a URI such as mailto:person@)

Changed

  • When validation finds incorrect part, it will now include the relationship type rather than a class name

Removed

  • .NET Standard 1.3 is no longer a supported platform. .NET Standard 2.0 is the lowest .NET Standard supported.
  • Removed unused SchemaAttrAttribute
  • Removed unused ChildElementInfoAttribute
  • Removed OpenXmlSimpleType.TextValue. This property was never meant to be used externally
  • Removed obsolete validation logic from v1 of the SDK
  • Removed obsoleted methods from 2.x
  • Removed mutable properties on OpenXmlAttribute and marked as readonly
  • Removed OpenXmlPackage.Close in favor of Dispose (#1373)
  • Removed OpenXmlPackage.SaveAs in favor of Clone (#1376)
  • Removed OpenXmlPackage.Package property. A OpenXmlPackage is now backed by an internal (for now) type IPackage instead of System.IO.Packaging.Package

Breaking change

  • Core infrastructure is now contained in a new package DocumentFormat.OpenXml.Framework. Typed classes are still in DocumentFormat.OpenXml. This means that you may reference DocumentFormat.OpenXml and still compile the same types, but if you want a smaller package, you may rely on just the framework package.
  • EnumValue<T> now is used to box a struct rather than a System.Enum. This allows us to enable behavior on it without resorting to reflection
  • Methods on parts to add child parts (i.e. AddImagePart) are now implemented as extension methods off of a new marker interface ISupportedRelationship<T>
  • Part type info enums (i.e. ImagePartType) is no longer an enum, but a static class to expose well-known part types as structs. Now any method to define a new content-type/extension pair can be called with the new PartTypeInfo struct that will contain the necessary information.
  • OpenXmlPackage.CanSave is now an instance property (#1307)
  • Removed OpenXmlSettings.RelationshipErrorHandlerFactory and associated types and replaced with a built-in mechanism to enable this
  • IdPartPair is now a readonly struct rather than a class
  • IDisposableFeature is now a part of the framework package and is available by default on a package or part.
  • Renamed PartExtensionProvider to IPartExtensionFeature and reduced its surface area to only two methods (instead of a full Dictionary<,>). The property to access this off of OpenXmlPackage has been removed, but may be accessed via Features.Get<IPartExtensionFeature>() if needed.
  • OpenXmlPart/OpenXmlContainer/OpenXmlPackage and derived types now have internal constructors (these had internal abstract methods so most likely weren't subclassed externally)

v2.20.0

1 year ago

Added

  • Added DocumentFormat.OpenXml.Office.Drawing.Y2022.ImageFormula namespace
  • Added DocumentFormat.OpenXml.Office.Word.Y2023.WordML.Word16DU namespace

Changed

  • Marked OpenXmlSimpleType.TextValue as obsolete. This property was never meant to be used externally (#1284)
  • Marked OpenXmlPackage.Package as obsolete. This will be an implementation detail in future versions and won't be accessible (#1306)
  • Marked OpenXmlPackage.Close as obsolete. This will be removed in a later release, use Dispose instead (#1371)
  • Marked OpenXmlPackage.SaveAs as obsolete as it will be removed in a future version (#1378)

Fixed

  • Fixed incorrect file extensions for vbaProject files (#1292)
  • Fixed incorrect file extensions for ImagePart (#1305)
  • Fixed incorrect casing for customXml (#1351)
  • Fixed AddEmbeddedPackagePart to allow correct extensions for various content types (#1388)

Thanks to the following for their contributions:

@Asbjoedt

v2.19.0

1 year ago

Added

  • .NET 6 target with support for trimming (#1243, #1240)
  • Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData namespace
  • Added DocumentFormat.OpenXml.Office.PowerPoint.Y2019.Main.Command namespace
  • Added DocumentFormat.OpenXml.Office.PowerPoint.Y2022.Main.Command namespace
  • Added Child RichDataPivotCacheGuid to DocumentFormat.OpenXml.Office2010.Excel.PivotCacheDefinition

Fixed

  • Removed reflection usage where possible (#1240)
  • Fixed issue where some URIs might be changed when cloning or creating copy (#1234)
  • Fixed issue in FlatOpc generation that would not read the full stream on .NET 6+ (#1232)
  • Fixed issue where restored relationships wouldn't load correctly (#1207)
  • Upgraded Newtonsoft to version 13.0.2 for security issue (#1258)

@f1nzer @rstm-sf

v2.18.0

1 year ago

Added

  • Added DocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021 namespace (#1196)
  • Added durableId attribute to DocumentFormat.OpenXml.Wordprocessing.NumberingPictureBullet (#1196)
  • Added few base classes for typed elements, parts, and packages (#1185)

Changed

  • Adjusted LICENSE.md to conform to .NET Foundation requirements (#1194)
  • Miscellaneous changes for better perf for internal services