A python module to generate xlsx files from a xlsx template
Project description
Use xltpl.
xlsxtpl
A python module to generate xlsx files from a xlsx template.
How it works
xlsxtpl uses openpyxl to read and write .xlsx files, uses jinja2 as its template engine.
When xlsxtpl reads a .xlsx file, it creates a tree for each worksheet.
Then, it translates the tree to a jinja2 template with custom tags.
When the template is rendered, jinja2 extensions of cumtom tags call corresponding tree nodes to write the .xlsx file.
Syntax
xlsxtpl uses jinja2 as its template engine, follows the syntax of jinja2 template.
Each worksheet is translated to a jinja2 template with custom tags.
...
...
{% row 45 %}
{% cell 46 %}{% endcell %}
{% cell 47 %}{% endcell %}
{% cell 48 %}{{address}} {%xv v%}{% endcell %}
{% cell 49 %}{% endcell %}
{% cell 50 %}{% endcell %}
{% cell 51 %}{% endcell %}
{% cell 52 %}{% endcell %}
{% cell 53 %}{% endcell %}
{% row 54 %}
{% cell 55 %}{% endcell %}
{% cell 56 %}{% sec 0 %}{{name}}{% endsec %}{% sec 1 %}{{address}}{% endsec %}{% endcell %}
...
...
{% for item in items %}
{% row 64 %}
{% cell 65 %}{% endcell %}
{% cell 66 %}{% endcell %}
{% cell 67 %}{% endcell %}
{% cell 68 %}{% endcell %}
{% cell 69 %}{% endcell %}
{% cell 70 %}{% endcell %}
{% cell 71 %}{% endcell %}
{% cell 72 %}{% endcell %}
{% endfor %}
...
...
xlsxtpl added 4 custom tags: row, cell, sec, and xv.
row, cell, sec are used internally, used for row, cell and rich text.
xv is used to define a variable.
When a cell contains only a xv tag, this cell will be set to the type of the object returned from the variable evaluation.
For example, if a cell contains only {%xv amt %}, and amt is a number, then this cell will be set to Number type, displaying with the style set on the cell.
If there is another tag, it is equivalent to {{amt}}, will be converted to a string.
Installtion
pip install xlsxtpl
How to use
See examples.
Notes
Rich text
Openpyxl does not preserve the rich text it read. A temporary workaround for rich text is provided in this repo (2.6). For now, xlsxtpl uses this repo to support rich text reading and writing.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file xlsxtpl-0.3.1.tar.gz
.
File metadata
- Download URL: xlsxtpl-0.3.1.tar.gz
- Upload date:
- Size: 3.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/3.7.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 906ea1e30ca4c78621e2ff561580da77a2f1d72037365017a5ac79d518fefbbc |
|
MD5 | ef45a7f2a3b63e50d7afa21b26ec4278 |
|
BLAKE2b-256 | 34a0443adea637c6430f8ac8ffbbc737e11d05f0ba3c23b04d5ef188435df78b |
File details
Details for the file xlsxtpl-0.3.1-py3-none-any.whl
.
File metadata
- Download URL: xlsxtpl-0.3.1-py3-none-any.whl
- Upload date:
- Size: 3.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/3.7.0 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a942dbb7c743b2142ac7a58d3288080bbf194c0cf30bb4c58a245eabae5f643 |
|
MD5 | 18449771af655149732fb9912c1702a0 |
|
BLAKE2b-256 | 2dea0b85ef03f0e68bfc0011d235bbb1e2b18709f3e8b414cb1e520fe548bd67 |