https://github.com/kaisery/ooxmlsdk
Open XML SDK for Rust
https://github.com/kaisery/ooxmlsdk
docx office pptx xlsx
Last synced: 6 months ago
JSON representation
Open XML SDK for Rust
- Host: GitHub
- URL: https://github.com/kaisery/ooxmlsdk
- Owner: KaiserY
- License: apache-2.0
- Created: 2024-08-30T07:55:51.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-06T15:18:48.000Z (6 months ago)
- Last Synced: 2025-04-06T16:27:42.520Z (6 months ago)
- Topics: docx, office, pptx, xlsx
- Language: Rust
- Homepage:
- Size: 4.14 MB
- Stars: 17
- Watchers: 2
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Open XML SDK for Rust
[](https://crates.io/crates/ooxmlsdk)
[](https://docs.rs/ooxmlsdk)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](https://github.com/dotnet/Open-XML-SDK).
## Features
- Deserialize/serialize OOXML for Rust structs
- Namespace support
- Read & Write `docx`, `xlsx` and `pptx` file
- All Rust structs and ser/de code are generated from metadata (`crates/ooxmlsdk/data`)
- Documentation for Rust structs## What's missing
- No validation (WIP)
- No Particle: all xml children is in a flattern `children` vector of enum (`OneSequence` is supported, xml children are represented as struct's fields)## Project Structure
- `crates/ooxmlsdk`: generated code for deserialize & serialize OOXML
- `crates/ooxmlsdk-build`: generate code for deserialize & serialize OOXML
- `examples/*`: examples## Known Issues
- This library raise recursion limit by `#![recursion_limit = "768"]` for `cargo doc`, you may need to add it too, be cautious when use.
- Currently no `serde` support: intial benches show `serde` slower than current custom implemention; `serde` somehow not good at working with xml, you need a lot of special rename for xml attribute or children.## License
MIT OR Apache-2.0
**`crates/ooxmlsdk/data` is directly copied from .NET [Open XML SDK](https://github.com/dotnet/Open-XML-SDK/tree/main/data) so this directory is licensed under [this license](https://github.com/dotnet/Open-XML-SDK/blob/main/LICENSE)**