This project aims to provide a streamlined, efficient way to create and manipulate Excel, PowerPoint, and Word documents using the OpenXML format. By leveraging the power of modern programming languages, this library simplifies the process of document creation, enabling developers to focus on functionality rather than the intricacies of the OpenXML standard.
Please refer stable branch for V2/Stable Package related details. This is active development Branch
After thorough analysis, I have concluded that the full OpenXML format relations and connections are adequately addressed. Therefore, to eliminate duplicate work, V3 is no longer under development. Please follow V4 updates for final results.
Supported Languages | Min.Support Version | Readme link | Packages | package link | Description |
---|---|---|---|---|---|
Rust | 1.32 | TODO | Rust | Crates | Rust crate directly connecting to core lib |
C# | .net6.0 | TODO | C# | Nuget | C# wrapper package wrote around FFI layer of rust |
Python | TODO | Python | PyPi | Python Wrapper package wrote around FFI layer of rust | |
---------------- | ---------- | --------- | -------- | --------- | ------- |
PHASE 2 | PHASE 2 | PHASE 2 | PHASE 2 | PHASE 2 | PHASE 2 |
--------------- | ----------- | --------- | -------- | ---------- | ------- |
Java | 1.8 | TODO | Java | Maven Central | Java wrapper package wrote around FFI layer of rust |
Go | 1.22 | TODO | Go | Github | Go wrapper package wrote around FFI layer of rust |
TypeScript | TODO | TypeScript | npm | NAPI-RS is used to expose the core lib as node addon | |
Rust-API | Docker Hub | API container running rust crate for HTTP support |
Language | Package | Progress |
---|---|---|
Flatbuffers | common | π©β¬β¬β¬β¬ |
Rust | fbs | π©β¬β¬β¬β¬ |
Rust | xml | π©π©π©β¬β¬ |
Rust | global | π©β¬β¬β¬β¬ |
Rust | spreadsheet | π©π©β¬β¬β¬ |
Rust | presentation | π©β¬β¬β¬β¬ |
Rust | document | π©β¬β¬β¬β¬ |
Rust | FFI | π©β¬β¬β¬β¬ |
C# | fbs | π©β¬β¬β¬β¬ |
C# | spreadsheet | π©β¬β¬β¬β¬ |
C# | presentation | π©β¬β¬β¬β¬ |
C# | document | π©β¬β¬β¬β¬ |
Python | fbs | π©β¬β¬β¬β¬ |
Python | spreadsheet | β¬β¬β¬β¬β¬ |
Python | presentation | β¬β¬β¬β¬β¬ |
Python | document | β¬β¬β¬β¬β¬ |
----------- | ----------- | -------- |
PHASE 2 | PHASE 2 | PHASE 2 |
----------- | ----------- | -------- |
Java | fbs | β¬β¬β¬β¬β¬ |
Java | spreadsheet | β¬β¬β¬β¬β¬ |
Java | presentation | β¬β¬β¬β¬β¬ |
Java | document | β¬β¬β¬β¬β¬ |
Go | fbs | β¬β¬β¬β¬β¬ |
Go | spreadsheet | β¬β¬β¬β¬β¬ |
Go | presentation | β¬β¬β¬β¬β¬ |
Go | document | β¬β¬β¬β¬β¬ |
TypeScript | fbs | β¬β¬β¬β¬β¬ |
TypeScript | spreadsheet | β¬β¬β¬β¬β¬ |
TypeScript | presentation | β¬β¬β¬β¬β¬ |
TypeScript | document | β¬β¬β¬β¬β¬ |
This release marks a significant evolution for the OpenXML-office project. The upcoming version, V4, will be a complete rewrite of this package. It aims to maintain previous release structures as much as possible, with a strong focus on minimizing migration efforts for adopters.
This project has been in the works for nearly a year, driven by a desire to explore the OpenXML standards for office documents. Initially developed as a C# project using the OpenXML-SDK as a baseline, I have now gathered sufficient knowledge to transition into a cross-platform, multi-language supported package. This effort is a way to give back to the community that has been instrumental in my professional and personal growth.
The core system is written in Rust, ensuring optimal performance and memory usage. This system is then exposed as a "C" extern FFI, facilitating interaction with other languages. Wrappers for each supported language have been created, and the package is published in the respective package managers. For TypeScript, napi-rs
is utilized to create a Node.js addon, preserving performance advantages. The data transmission is handled using FlatBuffer, following a central schema that ensures consistent patterns across all supported languages and facilitates code organization and documentation maintenance.
This package supports .xlsx
, .pptx
, and .docx
formats starting from Office 2007. Features are organized into respective modules, namespaces, and directories to provide clarity on the minimum supported version for each feature. The package is designed to be compatible with all applications that open standard OpenXML documents, including online solutions.
I will be halting work on the V3 version to prevent duplicate efforts. I have gathered all foundational information necessary for designing the system from the ground up, leading to this decision.
I anticipate a timeline of 6-8 months for migrating all existing features from the repository to the new codebase. The same functionality will be available across all supported languages and operating systems. While timelines may vary based on my availability, I am committed to maintaining consistent progress, so there should not be significant surprises.
Until then, V2 will remain the stable version for use, and any issues related to Excel and PowerPoint will be prioritized until V4 is ready for release.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. If you have suggestions that could improve this project, please fork the repo and create a pull request. Alternatively, you can open an issue tagged "enhancement." Donβt forget to star the project!
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Please ensure you follow the PR and issue templates for quicker resolution.
Your feedback and support are important. Feel free to reach out with any questions or suggestions.