24 releases
| 0.3.0 | Jul 16, 2025 |
|---|---|
| 0.2.3 | Jul 4, 2025 |
| 0.2.2 | Apr 24, 2025 |
| 0.1.18 | Nov 5, 2024 |
| 0.1.14 | Sep 29, 2024 |
#2420 in Parser implementations
Used in ooxmlsdk
175KB
5K
SLoC
Open XML SDK for Rust
Open XML SDK for Rust (ooxmlsdk) is a Rust library for working with Office Word, Excel, and PowerPoint documents. The basic idea is inspired by .NET Open XML SDK.
Features
default:docx,xlsx,pptx,office2007andparts.schemas: generate xml schemas, deserializers and serializers. this feature is always enabled.parts: genrate parts for reading and writing office file.validators: WIP, for validate xml.docx: generate docx related schemas, parts etc.xlsx: generate xlsx related schemas, parts etc.pptx: generate pptx related schemas, parts etc.office2007: generate office2007 related schemas, parts etc. this feature is always enabled.office2010: generate office2010 and below related schemas, parts etc.office2013: generate office2013 and below related schemas, parts etc.office2016: generate office2016 and below related schemas, parts etc.office2019: generate office2019 and below related schemas, parts etc.office2021: generate office2021 and below related schemas, parts etc.microsoft365: generate microsoft365 related schemas, parts etc.
What's missing
- No validation (WIP)
- No Particle: all xml children is in a flattern
childrenvector of enum (OneSequenceis supported, xml children are represented as struct's fields)
Project Structure
crates/ooxmlsdk: generated code for deserialize & serialize OOXMLcrates/ooxmlsdk-build: generate code for deserialize & serialize OOXMLexamples/*: examples
Known Issues
- This library raise recursion limit by
#![recursion_limit = "512"]forcargo doc, you may need to add it too, be cautious when using. - Currently no
serdesupport. to_string()is just forDisplay, which is slower thanto_xml(). Prefer usingto_xml().
Changelog
See CHANGELOG.md.
License
MIT OR Apache-2.0
crates/ooxmlsdk/data is directly copied from .NET Open XML SDK so this directory is licensed under this license
Dependencies
~2.1–3.5MB
~66K SLoC