pyexcel-ezodf
A Python package to create/manipulate OpenDocumentFormat files
What it is and what it does
Pyexcel-ezodf is a Python library for creating and manipulating OpenDocument Format (ODF) files—the standard format used by LibreOffice and other office suites. It lets you programmatically create new ODF documents (text, spreadsheet, presentation, or drawing files) or open and modify existing ones, adding or editing content like paragraphs, headings, sheets, and cells. The library handles the underlying XML structure and ZIP packaging that ODF files use, so you work with high-level objects instead.
The package is currently in maintenance mode: the original upstream project stopped active development, and pyexcel has taken over caretaker responsibility. The last release was in October 2017 and the last commit in June 2019. It is classified as Alpha software and was tested against Python 2.6 through 3.6, though compatibility with newer Python versions is uncertain. No runtime dependencies are required beyond what the package itself provides.
Use it for:
- Generate ODS spreadsheets programmatically with data, formulas, and formatting without requiring LibreOffice or Excel installed
- Create ODT text documents dynamically with headings, paragraphs, and structured content from application data
- Open and modify existing ODF files to extract data or update content in place
- Build document templates and populate them with variable data at runtime
- Convert or migrate data into ODF format for compatibility with office suites
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Create, open, and modify OpenDocument Format (ODF) files—including text documents, spreadsheets, presentations, and drawings—by programmatically adding, editing, or deleting document content.
No. The package is abandoned (last update October 2017, last commit June 2019) and classified as Alpha. While it has no known vulnerabilities and low install friction, its age and uncertain compatibility with modern Python versions make it a poor choice for new projects. Consider actively maintained alternatives for ODF manipulation or use the original upstream ezodf if you need a more recent fork.
Install
pyexcel-ezodf on PyPI
pip
pip install pyexcel-ezodfuv
uv add pyexcel-ezodfpoetry
poetry add pyexcel-ezodfInstalling pyexcel-ezodf
Before you install
Installation is straightforward with no runtime dependencies, but the package is abandoned—last release was in October 2017 and last commit in June 2019. Pyexcel maintains it as a caretaker during the original maintainer's absence, but no active development is occurring.
License in practice
MIT license is permissive and imposes no significant restrictions on use, modification, or distribution.
Quickstart
pip install pyexcel-ezodf
from ezodf import newdoc, Paragraph, Heading, Sheet
odt = newdoc(doctype='odt', filename='text.odt')
odt.body += Heading("Chapter 1")
odt.body += Paragraph("This is a paragraph.")
odt.save()
ods = newdoc(doctype='ods', filename='spreadsheet.ods')
sheet = Sheet('SHEET', size=(10, 10))
ods.sheets += sheet
sheet['A1'].set_value("cell with text")
ods.save()
Verify before relying
- Whether lxml is automatically installed as a dependency or must be installed separately
- Current compatibility with Python versions beyond 3.6
- Whether the package works reliably with modern versions of lxml
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | abandoned — 3,217 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 112,013/month — #12,385 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyexcel_ezodf-0.3.4-py2.py3-none-any.whl
Keywords: ODF
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
ezodfezodf creates, opens, and modifies OpenDocument…
permissive · top 15,000 on PyPI
odfdoodfdo is a Python library for creating,…
permissive · top 15,000 on PyPI
odfpyOdfpy reads and writes OpenDocument v. 1.2…
unclear · top 5,000 on PyPI
pyexcel-ods3Reads, manipulates, and writes data in ODS…
permissive · top 15,000 on PyPI
py3o.templateMerges data into LibreOffice/OpenOffice…
permissive · top 15,000 on PyPI
pyexcel-webioProvides a unified interface library for…
permissive · top 15,000 on PyPI
pyexcel-xlsxReads, manipulates, and writes xlsx and xlsm…
permissive · top 5,000 on PyPI
pyexcelProvides a single API to read, write, and…
permissive · top 5,000 on PyPI
pyexcel-ioProvides a unified API to read and write data…
permissive · top 5,000 on PyPI
adf-libadf_lib creates and manipulates Atlassian…
permissive · top 15,000 on PyPI