https://github.com/turulomio/unogenerator
Libreoffice files generator programmatically with python and Libreoffice server instances
https://github.com/turulomio/unogenerator
docx libreoffice libreoffice-api libreoffice-calc libreoffice-writer linux localc lowriter odf ods odt pdf python pyuno reader translation uno writer xlsx
Last synced: 6 days ago
JSON representation
Libreoffice files generator programmatically with python and Libreoffice server instances
- Host: GitHub
- URL: https://github.com/turulomio/unogenerator
- Owner: turulomio
- License: gpl-3.0
- Created: 2021-09-16T15:59:39.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-27T15:25:51.000Z (over 1 year ago)
- Last Synced: 2024-12-28T04:38:32.450Z (over 1 year ago)
- Topics: docx, libreoffice, libreoffice-api, libreoffice-calc, libreoffice-writer, linux, localc, lowriter, odf, ods, odt, pdf, python, pyuno, reader, translation, uno, writer, xlsx
- Language: Python
- Homepage:
- Size: 10.9 MB
- Stars: 16
- Watchers: 3
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# UnoGenerator [](https://pypi.org/project/unogenerator/) [](https://github.com/turulomio/unogenerator/) [](https://github.com/turulomio/unogenerator/actions/workflows/python-app.yml)
## Description
**UnoGenerator** is a powerful Python module designed to generate LibreOffice documents (ODT and ODS) programmatically with high performance and professional aesthetics.
Key features include:
- **Professional Defaults**: Automatic text wrapping (`word_wrap=True`) and vertical centering for professional-looking reports out of the box.
- **High Performance**: Optimized for large datasets. Inserting 10,000 rows with default formatting takes less than 0.3 seconds.
- **Rich Exports**: Easy export to `.xlsx`, `.docx`, and `.pdf`.
- **Advanced Helpers**: Flexible totals generation, automatic column width calculation, and complex data block handling.
- **Multilingual Support**: Built-in support for translations and localized document generation.
It uses the LibreOffice UNO module, requiring a LibreOffice installation on your system.
## Installation
Only Linux is supported. See the [installation guide](INSTALL.md) for detailed instructions on main Linux distributions.
## Architecture
UnoGenerator follows a clean, template-based architecture:
- **ODS/ODT**: Generic base classes for document manipulation.
- **ODS_Standard / ODT_Standard**: Optimized subclasses that use the built-in professional templates, providing specific styles (like "Normal", "BoldCenter") and optimized row heights.
## ODT 'Hello World' example
Create a professional ODT document with just a few lines:
```python
from unogenerator import ODT_Standard
with ODT_Standard() as doc:
doc.addParagraph("Hello World", "Heading 1")
doc.addParagraph("Easy, isn't it", "Standard")
doc.save("hello_world.odt")
doc.export_docx("hello_world.docx")
doc.export_pdf("hello_world.pdf")
```
## ODS 'Hello World' example
Generate a styled spreadsheet with automatic wrapping and alignment:
```python
from unogenerator import ODS_Standard
with ODS_Standard() as doc:
# word_wrap and vertical alignment are enabled by default
doc.addCellMergedWithStyle("A1:E1", "Sales Report 2026", style="BoldCenter")
doc.addRowWithStyle("A2", ["Product", "Quantity", "Price", "Total"])
doc.save("sales_report.ods")
doc.export_xlsx("sales_report.xlsx")
```
## Advanced Features: Totals and Formulas
UnoGenerator provides advanced helpers to generate calculations quickly:
```python
from unogenerator import helpers
# Generates both row and column totals with a custom formula template
helpers.cross_totals_from_range(doc, "B2:D10", key="=SUM({}*1.21)")
```
## Unogenerator scripts
The package includes several useful CLI tools:
### unogenerator_monitor
Monitors your LibreOffice server instances and their status.
### unogenerator_translation
Translate multiple ODT files using standard `.pot` and `.po` files.
`unogenerator_translation --from_language es --to_language en --input original.odt --output_directory "translated"`
### unogenerator_demo
Generate comprehensive example files and perform performance benchmarks on your system.
## Documentation
Full technical [documentation](https://github.com/turulomio/unogenerator/blob/main/doc/unogenerator_documentation_en.odt?raw=true) is available in the `doc` directory, created using UnoGenerator itself.
## Development links
- [LibreOffice code](https://github.com/LibreOffice/core)
- [LibreOffice API](https://api.libreoffice.org/docs/idl/ref/index.html)
- [UnoGenerator API (Doxygen)](https://coolnewton.mooo.com/doxygen/unogenerator/)