An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# Open XML SDK for Rust

[![crates.io](https://img.shields.io/crates/v/ooxmlsdk.svg)](https://crates.io/crates/ooxmlsdk)
[![docs](https://docs.rs/ooxmlsdk/badge.svg)](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)**