不是我想要的效果,我想要的是能通过类似jinja2之类的模板引擎的语法方式,预先写好Excel模板,再通过字典{变量名}的形式传给Excel模板进行参数填充,从而生产(渲染)新Excel
时间: 2023-11-22 16:54:43 浏览: 146
明白了,你想要一个能够通过类似模板引擎的语法方式进行参数填充的 Excel 模板引擎。这样的话,你可以考虑使用 Python 的 openpyxl 库,它可以读取、修改和生成 Excel 文件。然后,你可以使用 jinja2 或其他模板引擎来生成要填充的数据。
具体步骤如下:
1. 安装 openpyxl 库和 jinja2 库
```
pip install openpyxl
pip install jinja2
```
2. 创建 Excel 模板文件,并在其中添加需要填充的变量名。例如,你可以在一个单元格中添加 "{{ 变量名 }}"。
3. 使用 openpyxl 库读取 Excel 模板文件,并解析其中的变量名。
```python
from openpyxl import load_workbook
from jinja2 import Template
# 加载 Excel 模板文件
wb = load_workbook('template.xlsx')
# 获取要填充数据的工作表
sheet = wb.active
# 获取模板中的变量名
variables = []
for row in sheet.iter_rows():
for cell in row:
if isinstance(cell.value, str) and '{{' in cell.value and '}}' in cell.value:
variables.append(cell.value.strip('{}'))
```
4. 准备要填充的数据,并使用 jinja2 库生成填充后的数据。
```python
# 准备要填充的数据
data = {
'name': '张三',
'age': 20,
'gender': '男'
}
# 使用 jinja2 库生成填充后的数据
template = Template(sheet.cell(row=1, column=1).value)
rendered_data = template.render(data)
```
5. 将填充后的数据写入 Excel 文件中。
```python
# 将填充后的数据写入 Excel 文件中
sheet.cell(row=1, column=1).value = rendered_data
wb.save('output.xlsx')
```
这样,你就可以通过类似模板引擎的语法方式,在 Excel 模板中预先写好需要填充的变量名,然后使用 Python 的 openpyxl 库和 jinja2 库,将数据填充到 Excel 模板中,生成新的 Excel 文件。
阅读全文