odfdo
Python library for OpenDocument Format
What it is and what it does
odfdo is a Python library for programmatically working with OpenDocument Format files—the ISO/IEC 26300 standard used by LibreOffice and other office suites. It lets you create new ODF documents from scratch, load and modify existing ones, and manipulate their content including text, tables, styles, and metadata. The library saves documents as ODF 1.4 and can read documents from ODF 1.0 through 1.4.
The package is built on lxml for XML handling and comes with a command-line toolkit (odfdo-diff, odfdo-markdown, odfdo-replace, odfdo-csv, and others) for common tasks like converting documents to Markdown, finding and replacing text, importing/exporting CSV data, and managing styles. It's designed for developers who need to automate document generation or manipulation without requiring LibreOffice itself.
Use it for:
- Generate reports or invoices as .odt or .ods files programmatically from application data.
- Parse and extract text or table data from existing ODF documents for processing or migration.
- Batch convert ODF files to other formats (e.g., Markdown via odfdo-markdown) or between ODF versions.
- Create spreadsheets from CSV data or export spreadsheet tables to CSV for downstream processing.
- Automate document styling and metadata updates across multiple ODF files using the command-line utilities.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
odfdo is a Python library for creating, parsing, and editing OpenDocument Format (ODF) files including text documents (.odt), spreadsheets (.ods), presentations (.odp), and drawings (.odg).
Yes. odfdo is actively maintained, has minimal dependencies, supports current Python versions, carries no known vulnerabilities, and is licensed permissively. Install it if you need to work with ODF files programmatically—it's the primary Python library for this task and comes with both a clean API and practical command-line tools.
Install
odfdo on PyPI
pip
pip install odfdouv
uv add odfdopoetry
poetry add odfdoInstalling odfdo
Before you install
Low friction installation with only two runtime dependencies (lxml and typing-extensions). Actively maintained with a release on 2026-08-14 and recent commits. Tested across Python 3.10 through 3.14.
License in practice
Licensed under Apache License 2.0 (permissive), allowing commercial and private use with minimal restrictions.
Quickstart
pip install odfdo
from odfdo import Document, Paragraph
doc = Document('text')
doc.body.append(Paragraph("Hello world!"))
doc.save("hello.odt")
Requires Python 3.10 or later; lxml must be installed (automatically handled by pip).
Verify before relying
- Performance characteristics when working with large ODF files or complex document structures.
- Completeness of ODF 1.4 feature support relative to the full specification.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (<4,>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 2 — lxml, typing-extensions |
| Maintenance | actively maintained — 0 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 146,680/month — #11,092 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: odfdo-3.24.4-py3-none-any.whl
Keywords: python, library, ODF, OpenDocument
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
ezodfezodf creates, opens, and modifies OpenDocument…
permissive · top 15,000 on PyPI
odfpyOdfpy reads and writes OpenDocument v. 1.2…
unclear · top 5,000 on PyPI
py3o.templateMerges data into LibreOffice/OpenOffice…
permissive · top 15,000 on PyPI
pyexcel-ezodfCreate, open, and modify OpenDocument Format…
permissive · top 15,000 on PyPI
pyexcel-ods3Reads, manipulates, and writes data in ODS…
permissive · top 15,000 on PyPI
onyx-devtoolsA command-line utility that provides developer…
permissive · top 15,000 on PyPI
aspose-slidesAspose.Slides generates, modifies, converts,…
unclear · top 15,000 on PyPI
odg-clientodg-client is a Python client library for…
unclear · top 15,000 on PyPI
pyhwpParses and extracts data from HWP Document…
agpl · top 15,000 on PyPI
doclingDocling parses diverse document formats—PDF,…
permissive · top 5,000 on PyPI