- Notifications
You must be signed in to change notification settings - Fork575
dotnet/Open-XML-SDK
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Note
3.0.0 introduced breaking changes and you should be able to update your package and recompile with limited changes. Please see thev3.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)
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 |
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 aNuGet.config file that looks similar to this:
<?xml version="1.0" encoding="utf-8"?><configuration> <packageSources> <addkey="OpenXmlCI"value="https://ooxml.blob.core.windows.net/feed/index.json" /> </packageSources></configuration>
For latests changes, please see thechangelog
- 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 aknown 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 availablehere.
Please seeOpen XML SDK for the official documentation.
- Stack Overflow (tags:openxml oropenxml-sdk)
- How-to samples:
- 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 theVS 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 theVS Code Marketplace
We welcome contributions! Many people all over the world have helped make this project better.
- Contributing explains what kinds of contributions we welcome
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 theSecurity TechCenter.
The Open XML SDK is a.NET Foundation project.
This project has adopted the code of conduct defined by theContributor Covenant to clarify expected behavior in our community. For more information, see the.NET Foundation Code of Conduct.
The Open XML SDK is licensed under theMIT license.
About
Open XML SDK by Microsoft
Topics
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.