22 releases

new 0.2.2 Apr 24, 2025
0.2.1 Apr 21, 2025
0.1.18 Nov 5, 2024
0.1.17 Oct 15, 2024
0.1.14 Sep 29, 2024

#1835 in Parser implementations

Download history 74/week @ 2025-02-09 44/week @ 2025-02-16 376/week @ 2025-04-20

377 downloads per month
Used in ooxmlsdk

MIT/Apache

170KB
5K SLoC

Open XML SDK for Rust

crates.io docs

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: docxxlsxpptxoffice2007" 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.

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–3.5MB
~64K SLoC