Releases: dotnet/Open-XML-SDK
Releases · dotnet/Open-XML-SDK
[3.2.0]
Added
- Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichData
namespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotDynamicArrays
namespace
Changed
- Updated Nuget badge on README
Fixed
- Fixed issue where a disposed object (DeflateStream) cannot be accessed after recovering from malformed url (#1802)
- Fixed issue with relationships not being created when cloning Flat OPC (#1814)
- Fixed issue with corrupt files remaining locked after attempting to open with
WordprocessingDocument.Open
(#1681) - Fixed issue with changes not applied after
.Save()
(#1771) - Fixed
AddWorkbookPart
throws exception if no main part is available (#1745) - Fixed issue with base classes not included with LINQ generation (#1838)
Thanks to the following for their contributions:
[3.1.1]
[3.1.0]
Added
- Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotAutoRefresh
namespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotDynamicArrays
namespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.DataSourceVersioning
namespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.ExternalCodeService
namespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.MsForms
namespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.Pivot2023Calculation
namespace
Fixed
[3.0.2]
[3.0.1]
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 innerUriFormatException
) (#1644)
[3.0.0]
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
namespaceDocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.Main
namespaceDocumentFormat.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
toDocumentFormat.OpenXml.Packaging.IPackage
instead ofSystem.IO.Packaging.Package
with a similar API surface EnumValue<T>
now is used to box a struct rather than aSystem.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 interfaceISupportedRelationship<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 newPartTypeInfo
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
toIPartExtensionFeature
and reduced its surface area to only two methods (instead of a fullDictionary<,>
). The property to access this off ofOpenXmlPackage
has been removed, but may be accessed viaFeatures.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 implementsIEnumerable<OpenXmlElement>
andIReadOnlyList<OpenXmlElement>
where available (#1429)- Individual implementations of
OpenXmlPartReader
are available now for each package type (i.e.WordprocessingDocumentPartReader
,SpreadsheetDocumentPartReader
,PresentationDocumentPartReader
), and the previousTypedOpenXmlPartReader
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 nameam3d.model3d
(Previouslyam3d.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 ofDispose
(#1373) - Removed
OpenXmlPackage.SaveAs
in favor ofClone
(#1376)
[3.0.0-beta3]
[v3.0.0-beta2]
Breaking Changes
OpenXmlElementList
is now a struct that implementsIEnumerable<OpenXmlElement>
andIReadOnlyList<OpenXmlElement>
(where available)- Individual implementations of
OpenXmlPartReader
are available now for each package type (i.e.WordprocessingDocumentPartReader
,SpreadsheetDocumentPartReader
,PresentationDocumentPartReader
), and the previousTypedOpenXmlPartReader
has been removed.
[3.0.0-beta1]
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. AOpenXmlPackage
is now backed by an internal (for now) typeIPackage
instead ofSystem.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 aSystem.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 interfaceISupportedRelationship<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 newPartTypeInfo
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 classIDisposableFeature
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)
[2.20.0]
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: