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-18T10:24:06.000Z (6 months ago)
- Last Synced: 2025-04-18T17:41:37.685Z (6 months ago)
- Topics: docx, office, pptx, xlsx
- Language: Rust
- Homepage:
- Size: 4.34 MB
- Stars: 22
- 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
* `default`: `docx`,`xlsx`,`pptx`,`office2007"` and `parts`.
* `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 `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 = "512"]` for `cargo doc`, you may need to add it too, be cautious when using.
- Currently no `serde` support.
- `to_string()` is just for `Display`, which is slower than `to_xml()`. Prefer using `to_xml()`.## Changelog
See [CHANGELOG.md](./CHANGELOG.md).
## 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)**