Create Excel file according to the Excel template which fits a specific format
Project description
项目描述
根据特定格式的Excel模版,通过填充数据生成实际的Excel文件。 实际文件中的单元格样式,完全从模版文件中复制过来。 省去了代码定义单元格样式的过程,简化了开发和维护。
安装
pip install excel-template
同时需要安装
pip install openpyxl>=2.5.0
示例代码
import os
from excel_template import Writer
template_path = os.path.join(
ENV['root'], 'template', 'XXX_template.xlsx')
output_file_path = os.path.join(
ENV['root'], 'output', 'XXX.xlsx')
# Sheet1为模版所在的Sheet名称
excel_writer = Writer(template_path, 'Sheet1', output_file_path)
data = XXXModule().get_XXX_data()
if isinstance(data, dict):
excel_writer.set_data(data)
elif isinstance(data, list):
excel_writer.set_data(data, multi_sheet=True)
else:
raise Exception(
'如果生成单Sheet的Excel文件,data的格式必须为dict' +
'如果生成多Sheet的Excel文件,data的格式必须为list' +
'其中,list的每个数据成员,渲染一个Sheet')
模版的使用规则
-
示例模版:(看不清图片,请右键,点击在新标签页中打开图片)
-
对应的填充数据如下:
data = {
'company_name': 'ExampleName',
'company_address': 'ExampleAddress',
'company_contact': 'ExampleContact',
'dport_and_country': 'Melbourne Airport, Australia',
'aport_and_country': 'Shanghai Airport, China',
'logsitics_no': 'L122212',
'create_time': '2019-01-31',
'containers': [
{
'pallet_no': '---',
'carton_no': '1',
'sku_no': '',
'hs_code': '',
'description_cn': '',
'description_en': '',
'description_note': '',
'qty': '',
'net_weight': 16.027,
'gross_weight': 1,
'length': 1,
'width': 1,
'height': 1,
'pallet_type': 'N/A'
},
{
'pallet_no': '',
'carton_no': '',
'sku_no': '35536633',
'hs_code': '43545545',
'description_cn': '自然裸妆假睫毛',
'description_en': 'Gurley mix',
'description_note': '',
'qty': 3,
'net_weight': 5.211,
'gross_weight': '',
'length': '',
'width': '',
'height': '',
'pallet_type': ''
}
],
'pallet_count': 0,
'carton_count': 1,
'total_qty': 3,
'total_net_weight': 16.027,
'total_gross_weight': 1,
'total_volume': 1
}
- 渲染的结果如下图所示:
- 注意事项:
- 全表支持横向合并单元格
- 只有表头数据(列表数据上方的非列表数据)支持纵向合并单元格,表尾数据(列表数据下方的非列表数据)不支持
- 如果想渲染空格的样式,例如合并单元格,也必须填充"{{}}'"
- 模版的复制,属于黑箱操作,因此样式(例如:边框等)需要认真设置。
待补充的方面
- 不支持表尾数据合并单元格,有需求可改进。
- 列表数据只支持一种生成规则,不支持不同列区域内存在不同的生成规则。
- 出现过生成Excel文件时间过长,导致接口超时的情况,目前还未对其进行研究过。 建议解决方法是,将其放到异步任务中执行。
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
excel-template-0.1.5.tar.gz
(6.1 kB
view details)
Built Distribution
File details
Details for the file excel-template-0.1.5.tar.gz
.
File metadata
- Download URL: excel-template-0.1.5.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/2.7.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eee2102aca5723b37513e9b324346b995416a437fbdc92a9349e187355dc9194 |
|
MD5 | 29fe04ff9032393d3fe43e31dc17eb59 |
|
BLAKE2b-256 | 9d39577369db8e455e1c33f8661d4893a724f96455ff8c85ab8521420799b028 |
File details
Details for the file excel_template-0.1.5-py2.py3-none-any.whl
.
File metadata
- Download URL: excel_template-0.1.5-py2.py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.1 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/2.7.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3feb0e4ff65e274dd7814378751e18bdf4d2d625a33ffead45c92f55cd92f699 |
|
MD5 | 0e87a61f04275caf6a03789d705aab6c |
|
BLAKE2b-256 | 4832e1884a4f69a8e925c01520beb187c0ee58107189f1556381ca3e54c4313b |