Releases: dotnet/Open-XML-SDK
Releases · dotnet/Open-XML-SDK
[3.3.0]
Added
- Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.WorkbookCompatibilityVersionnamespace
Fixed
- Performance of
.ToFlatOpc(...)has been greatly improved for large parts (#1863)
Thanks to the following for their contributions:
[3.2.0]
Added
- Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2022.PivotRichDatanamespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotDynamicArraysnamespace
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
AddWorkbookPartthrows 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.PivotAutoRefreshnamespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2024.PivotDynamicArraysnamespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.DataSourceVersioningnamespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.ExternalCodeServicenamespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.MsFormsnamespace - Added
DocumentFormat.OpenXml.Office.SpreadSheetML.Y2023.Pivot2023Calculationnamespace
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 (
OpenXmlPackageExceptionwith 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) IFeatureCollectioncan 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.MainnamespaceDocumentFormat.OpenXml.Office.PowerPoint.Y2022.M03.MainnamespaceDocumentFormat.OpenXml.Office.SpreadSheetML.Y2021.ExtLinks2021namespace
Changed
- When validation finds incorrect part, it will now include the relationship type rather than a class name
IDisposableFeatureis 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.PackagetoDocumentFormat.OpenXml.Packaging.IPackageinstead ofSystem.IO.Packaging.Packagewith 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 newPartTypeInfostruct that will contain the necessary information. OpenXmlPackage.CanSaveis now an instance property (#1307)- Removed
OpenXmlSettings.RelationshipErrorHandlerFactoryand associated types and replaced with a built-in mechanism to enable this IdPartPairis now a readonly struct rather than a class- Renamed
PartExtensionProvidertoIPartExtensionFeatureand reduced its surface area to only two methods (instead of a fullDictionary<,>). The property to access this off ofOpenXmlPackagehas been removed, but may be accessed viaFeatures.Get<IPartExtensionFeature>()if needed. OpenXmlPart/OpenXmlContainer/OpenXmlPackageand derived types now have internal constructors (these had internal abstract methods so most likely weren't subclassed externally)OpenXmlElementListis now a struct that implementsIEnumerable<OpenXmlElement>andIReadOnlyList<OpenXmlElement>where available (#1429)- Individual implementations of
OpenXmlPartReaderare available now for each package type (i.e.WordprocessingDocumentPartReader,SpreadsheetDocumentPartReader,PresentationDocumentPartReader), and the previousTypedOpenXmlPartReaderhas been removed. (#1403) - Reduced unnecessary target frameworks for packages besides DocumentFormat.OpenXml.Framework (#1471)
- Changed some spelling issues for property names (#1463, #1444)
Model3Dnow 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.Closein favor ofDispose(#1373) - Removed
OpenXmlPackage.SaveAsin favor ofClone(#1376)
[3.0.0-beta3]
[v3.0.0-beta2]
Breaking Changes
OpenXmlElementListis now a struct that implementsIEnumerable<OpenXmlElement>andIReadOnlyList<OpenXmlElement>(where available)- Individual implementations of
OpenXmlPartReaderare available now for each package type (i.e.WordprocessingDocumentPartReader,SpreadsheetDocumentPartReader,PresentationDocumentPartReader), and the previousTypedOpenXmlPartReaderhas 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.Closein favor of Dispose (#1373) - Removed
OpenXmlPackage.SaveAsin favor of Clone (#1376) - Removed
OpenXmlPackage.Packageproperty. AOpenXmlPackageis now backed by an internal (for now) typeIPackageinstead 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 newPartTypeInfostruct that will contain the necessary information. OpenXmlPackage.CanSaveis now an instance property (#1307)- Removed
OpenXmlSettings.RelationshipErrorHandlerFactoryand associated types and replaced with a built-in mechanism to enable this IdPartPairis now a readonly struct rather than a classIDisposableFeatureis 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/OpenXmlPackageand derived types now have internal constructors (these had internal abstract methods so most likely weren't subclassed externally)