workflow - DocumentFormat.OpenXml 2.12.1
The Open XML SDK provides tools for working with Office Word, Excel, and PowerPoint documents. It supports scenarios such as:
- High-performance generation of word-processing documents, spreadsheets, and presentations.
- Populating content in Word files from an XML data source.
- Splitting up (shredding) a Word or PowerPoint file into multiple files, and combining multiple Word/PowerPoint files into a single file.
- Extraction of data from Excel documents.
- Searching and replacing content in Word/PowerPoint using regular expressions.
- Updating cached data and embedded spreadsheets for charts in Word/PowerPoint.
- Document modification, such as removing tracked revisions or removing unacceptable content from documents.
PM> Install-Package DocumentFormat.OpenXml -Version 2.12.1 -Source https://www.myget.org/F/workflow/api/v3/index.json
> nuget.exe install DocumentFormat.OpenXml -Version 2.12.1 -Source https://www.myget.org/F/workflow/api/v3/index.json
> dotnet add package DocumentFormat.OpenXml --version 2.12.1 --source https://www.myget.org/F/workflow/api/v3/index.json
source https://www.myget.org/F/workflow/api/v3/index.json
nuget DocumentFormat.OpenXml ~> 2.12.1
Copy to clipboard
> choco install DocumentFormat.OpenXml --version 2.12.1 --source https://www.myget.org/F/workflow/api/v2
Import-Module PowerShellGet
Register-PSRepository -Name "workflow" -SourceLocation "https://www.myget.org/F/workflow/api/v2"
Install-Module -Name "DocumentFormat.OpenXml" -RequiredVersion "2.12.1" -Repository "workflow"
Copy to clipboard
Open XML SDK
[!NOTE]
3.0.0 introduced breaking changes and you should be able to update your package and recompile with limited changes. Please see the v3.0.0 milestone for issues and PRs that were included.
[!IMPORTANT] The CI feed URL has changed as of 2 April, 2024. Please update to the new URL if using CI builds.
The Open XML SDK is a framework for working with Microsoft Office Word, Excel, and PowerPoint documents. It includes APIs for low-level operations related to OPC packages, Flat OPC files, and Open XML markup in two forms (i.e., strongly-typed classes and LINQ to XML). It is designed to closely follow the Microsoft Office implementation of the ISO 29500 standard, but was not intended to directly provide higher-level abstractions or productivity tools.
These APIs enable scenarios such as:
- High-performance generation of word-processing documents, spreadsheets, and presentations.
- Document modification, such as adding, updating, and removing content and metadata.
- Searching and replacing content using regular expressions.
- Splitting up (shredding) a file into multiple files, and combining multiple files into a single file.
- Updating cached data and embedded spreadsheets for charts in Word/PowerPoint.
Prerequisite for using the Open XML SDK: detailed knowledge of the relevant formats (https://learn.microsoft.com/en-us/openspecs/office_standards/ms-offstandlp) and standards (https://standards.iso.org/ittf/PubliclyAvailableStandards/index.html - search for 29500)
Table of Contents
Packages
The official release NuGet packages for Open XML SDK are on NuGet.org:
| Package | Stable | Prerelease |
|---|---|---|
| DocumentFormat.OpenXml.Framework | ||
| DocumentFormat.OpenXml | ||
| DocumentFormat.OpenXml.Linq | ||
| DocumentFormat.OpenXml.Features |
Daily Builds
The NuGet package for the latest builds of the Open XML SDK is available as a custom feed on an Azure blob. Stable releases here will be mirrored onto NuGet and will be identical. You must set up a NuGet.config file that looks similar to this:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="OpenXmlCI" value="https://ooxml.blob.core.windows.net/feed/index.json" />
</packageSources>
</configuration>
For latests changes, please see the changelog
Known Issues
- On .NET Core and .NET 5 and following, ZIP packages do not have a way to stream data. Thus, the working set can explode in certain situations. This is a known issue.
- On .NET Framework, an
IsolatedStorageExceptionmay be thrown under certain circumstances. This generally occurs when manipulating a large document in an environment with an AppDomain that does not have enough evidence. A sample with a workaround is available here.
Documentation
Please see Open XML SDK for the official documentation.
If you have how-to questions
- Stack Overflow (tags: openxml or openxml-sdk)
- How-to samples:
Related tools
- Open XML SDK 2.5 Productivity Tool: The Productivity Tool provides viewing and code generation compatible with the Open XML SDK 2.5.
- Open XML Powertools: This provides example code and guidance for implementing a wide range of Open XML scenarios.
- ClosedXml: This library provides a simplified object model on top of the OpenXml SDK for manipulating and creating Excel documents.
- OfficeIMO: This library provides a simplified object model on top of the OpenXml SDK manipulating and creating Word documents.
- OpenXML-Office: This nuget library provides a simplified object model on top of the OpenXml SDK manipulating and creating PPT and Excel documents.
- Serialize.OpenXml.CodeGen: This is a tool that converts an OpenXml document into the .NET code required to create it.
- Html2OpenXml: This is a tool that takes HTML and converts it to an OpenXml document.
- DocxToSource: This is a tool designed to be a replacement for the old OpenXML SDK Productivity Tool.
- OOXML Viewer: This is an extension for Visual Studio Code to View and Edit the xml parts of an Office Open XML file and to view a diff with the previous version of an OOXML part when saved from an outside program. Search "OOXML" in the VS Code extensions tab or download it from the VS Code Marketplace
- ShapeCrawler: This library provides a simplified object model on top of the OpenXml SDK to manipulate PowerPoint documents.
- OOXML Validator: VS Code extension to validate Office Open XML files. Search "OOXML" in the VS Code extensions tab or download it from the VS Code Marketplace
How can I contribute?
We welcome contributions! Many people all over the world have helped make this project better.
- Contributing explains what kinds of contributions we welcome
Reporting security issues and security bugs
Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secure@microsoft.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter.
.NET Foundation
The Open XML SDK is a .NET Foundation project.
This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the .NET Foundation Code of Conduct.
License
The Open XML SDK is licensed under the MIT license.
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Version 2.12.1 - 2021-01-11
Fixed
- Fixed bug where properties on
OpenXmlCompositeElementinstances could not be set to null to remove element (#850) - Fixed
OpenXmlElement.RawOuterXmlto properly set null values without throwing (#818) - Allow rewriting of all malformed URIs regardless of target value (#835)
Version 2.12.0 - 2020-12-09
Added
- Added
OpenSettings.RelationshipErrorHandlerFactoryto provide a way to handle URIs that break parsing documents with malformed links (#793) - Added
OpenXmlCompositeElement.AddChild(OpenXmlElement)to add children in the correct order per schema (#774) - Added
SmartTagCleanandSmartTagIdin place ofSmtCleanandSmtId(#747) - Added
OpenXmlValidator.Validate(..., CancellationToken)overrides to allow easier cancellation of long running validation on .NET 4.0+ (#773) - Added overloads for
CellValueto takedecimal,double, andint, as well as convenience methods to parse them (#782) - Added validation for
CellTypefor numbers and date formats (#782) - Added
OpenXmlReader.GetLineInfo()to retrieveIXmlLineInfoof the underlying reader if available (#804)
Fixed
- Fixed exception that would be thrown if attempting to save a document as FlatOPC if it contains SVG files (#822)
- Added
SchemaAttrAttributeattributes back for backwards compatibility (#825)
Removed
- Removed explicit reference to
System.IO.Packagingon .NET 4.6 builds (#774)
Version 2.11.3 - 2020-07-17
Fixed
- Fixed massive performance bottleneck when
IndexReferenceConstraintandReferenceExistConstraintare involved (#763) - Fixed
CellValueto only include three most signficant digits on second fractions to correct issue loading dates (#741) - Fixed a couple of validation indexing errors that might cause erroneous validation errors (#767)
- Updated internal validation system to not use recursion, allowing for better short-circuiting (#766)
Version 2.11.2 - 2020-07-10
Fixed
- Fixed broken source link (#749)
- Ensured compilation is deterministic (#749)
- Removed extra file in NuGet package (#749)
Version 2.11.1 - 2020-07-10
Fixed
- Ensure .NET Framework builds pass PEVerify (#744)
OpenXmlPartContainer.DeletePartno longer throws an exception if there isn't a match for the identifier given (#740)- Mark obsolete members to not show up with Intellisense (#745)
- Fixed issue with
AttributeRequiredConditionToValuesemantic constraint where validation could fail on correct input (#746)
Version 2.11.0 - 2020-05-21
Added
- Added
FileFormatVersions.2019enum (#695) - Added
ChartSpaceand chart elements for the new 2016 namespaces. This allows the connecting pieces for building a chart part with chart styles like "Sunburst" (#687). - Added
OpenXmlElementFunctionalExtensions.With(...)extension methods, which offer flexible means for constructingOpenXmlElementinstances in the context of pure functional transformations (#679) - Added minimum Office versions for enum types and values (#707)
- Added additional
CompatSettingNameValuesvalues:UseWord2013TrackBottomHyphenation,AllowHyphenationAtTrackBottom, andAllowTextAfterFloatingTableBreak(#706) - Added gfxdata attribue to Arc, Curve, Line, PolyLine, Group, Image, Oval, Rect, and RoundRect shape complex types per MS-OI29500 2.1.1783-1799 (#709)
- Added
OpenXmlPartContainer.TryGetPartByIdto enable child part retrieval without exception if it does not exist (#714) - Added
OpenXmlPackage.StrictRelationshipFoundproperty that indicates whether this package contains Transitional relationships converted from Strict (#716)
Fixed
- Custom derived parts did not inherit known parts from its parent, causing failure when adding parts (#722)
Changes
- Marked the property setters in
OpenXmlAttributeas obsolete as structs should not have mutable state (#698)
Version 2.10.1 - 2020-02-28
Fixed
- Ensured attributes are available when
OpenXmlElementis initialized with outer XML (#684, #692) - Some documentation errors (#681)
- Removed state that made it non-thread safe to validate elements under certain conditions (#686)
- Correctly inserts strongly-typed elements before known elements that are not strongly-typed (#690)
Version 2.10.0 - 2020-01-10
Added
- Added initial Office 2016 support, including
FileFormatVersion.Office2016,ExtendedChartPartand other new schema elements (#586) - Added .NET Standard 2.0 target (#587)
- Included symbols support for debugging (#650)
- Exposed
IXmlNamespaceResolverfromXmlPathinstead of formatted list of strings to expose namespace/prefix mapping (#536) - Implemented
IComparable<T>andIEquatable<T>onOpenXmlComparableSimpleValueto allow comparisons without boxing (#550) - Added
OpenXmlPackage.RootPartto easily access the root part on any package (#661)
Changes
- Updated to v4.7.0 of System.IO.Packaging which brings in a number of perf fixes (#660)
- Consolidated data for element children/properties to reduce duplication (#540, #547, #548)
- Replaced opaque binary data for element children constraints with declarative model (#603)
- A number of performance fixes to minimize allocations where possible
- 20% size reduction from 5.5mb to 4.3mb
- The validation subsystem went through a drastic redesign. This may cause changes in what errors are reported.
Fixed
- Fixed some documentation inconsistencies (#582)
- Fixed
ToFlatOpcDocument,ToFlatOpcString,FromFlatOpcDocument, andFromFlatOpcStringto correctly process Alternative Format Import Parts, or "altChunk parts" (#659)
Version 2.9.1 - 2019-03-13
Changed
- Added a workaround for a .NET Native compiler issue that doesn't support calling Marshal.SizeOf
- Fixed a documentation error (#528)
Version 2.9.0 - 2018-06-08
Added
ListValuenow implementsIEnumerable<T>(#385)- Added a
WebExtension.Frozenand obsoleted misspelledFronzenproperty (#460) - Added an
OpenXmlPackage.CanSaveproperty that indicates whether a platform supports saving without closing the package (#468) - Simple types (except
EnumValueandListValue) now implementIComparable<T>andIEquatable<T>(#487)
Changed
- Removed state that was carried in validators that would hold onto packages when not in use (#390)
EnumSimpleTypeparsing was improved and uses less allocations and caches for future use (#408)- Fixed a number of spelling mistakes in documentation (#462)
- When calling
OpenXmlPackage.Saveon .NET Framework, the package is now flushed to the stream (#468) - Fixed race condition while performing strict translation of attributes (#480)
- Schema data for validation uses a more compact format leading to a reduction in dll size and performance improvements for loading (#482, #483)
- A number of APIs are marked as obsolete as they have simple workarounds and will be removed in the next major change
- Fixed some constraint values for validation that contained Office 2007, even when it was only supported in later versions
- Updated
System.IO.Packagingto 4.5.0 which fixes some issues on Xamarin platforms as well as minimizes dependencies on .NET Framework
Version 2.8.1 - 2018-01-03
Changed
- Corrected package license file reference to show updated MIT License
Version 2.8.0 - 2017-12-28
Added
- Default runtime directive for better .NET Native support.
Changed
- Fixed part saving to be encoded with UTF8 but no byte order mark. This caused some renderers to not be able to open the generated document.
- Fixed exceptions thrown when errors are encountered while opening packages to be consistent across platforms.
- Fixed issue on Mono platforms using System.IO.Packaging NuGet package (Xamarin, etc) when creating a document.
- Fixed manual saving of a package when autosave is false.
- Fixed schema constraint data and standardized serialization across platforms.
- Upgraded to
System.IO.Packagingversion 4.4.0 which fixes some consistency with .NET Framework in opening packages.
Version 2.7.2 - 2017-06-06
Added
- Package now supports .NET 3.5 and .NET 4.0 in addition to .NET Standard 1.3 and .NET Framework 4.6
Changed
- Fixed issue where assembly version wasn't set in assembly.
Version 2.7.1 - 2017-01-31
Changed
- Fixed crash when validation is invoked on .NET Framework with strong-naming enforced.
Version 2.7.0 - 2017-01-24
Added
- SDK now supports .NET Standard 1.3
Changed
- Moved to using System.IO.Packaging from dotnet/corefx for .NET Standard 1.3 and WindowsBase for .NET 4.5.
- Cleaned up project build system to use .NET CLI.
Version 2.6.1 - 2016-01-15
Added
- Added hundreds of XUnit tests. There are now a total of 1333 tests. They take about 20 minutes to run, so be patient.
Version 2.6.0 - 2015-06-29
Added
- Incorporated a replacement
System.IO.Packagingthat fixes some serious (but exceptional) bugs found in the WindowsBase implementation
-
.NETFramework 3.5
-
.NETFramework 4.0
-
.NETFramework 4.6
-
.NETStandard 1.3
- NETStandard.Library (>= 1.6.1)
- System.IO.Packaging (>= 4.7.0)
-
.NETStandard 2.0
- System.IO.Packaging (>= 4.7.0)
- .NETFramework 3.5: 3.5.0.0
- .NETFramework 4.0: 4.0.0.0
- .NETFramework 4.6: 4.6.0.0
- .NETStandard 1.3: 1.3.0.0
- .NETStandard 2.0: 2.0.0.0
OwnersToma Bogdan flaviusm |
AuthorsMicrosoft |
Project URLhttps://github.com/OfficeDev/Open-XML-SDK |
LicenseUnknown |
Tagsopenxml office |
Info1150161 total downloads |
| 57568 downloads for version 2.12.1 |
| Download (9.06 MB) |
| Found on the current feed only |
Package history
| Version | Size | Last updated | Downloads | Mirrored? | |||
|---|---|---|---|---|---|---|---|
|
|
2.12.1 | 9.06 MB | Wed, 19 May 2021 16:40:06 GMT | 57568 |
|
||
|
|
2.7.2 | 8.81 MB | Thu, 17 Jun 2021 08:07:00 GMT | 245355 |
|
||
|
|
2.5 | 1.5 MB | Thu, 17 Jun 2021 08:19:18 GMT | 847238 |
|