使用Python读取E:\工作\python文件\假数据.xlsx ,跟据每行数据替换到E:\工作\python文件\网格中文名网格分析优化报告-20230519-张文坚.docx,并根据传参生成多份word报告
时间: 2023-06-30 11:23:16 浏览: 65
好的,可以使用Python的openpyxl和python-docx库来实现这个功能。下面是代码示例:
```python
import os
import shutil
from openpyxl import load_workbook
from docx import Document
def replace_text_in_docx(docx_file, old_text, new_text):
"""
在Word文档中替换文本
"""
doc = Document(docx_file)
for p in doc.paragraphs:
if old_text in p.text:
p.text = p.text.replace(old_text, new_text)
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
if old_text in cell.text:
cell.text = cell.text.replace(old_text, new_text)
doc.save(docx_file)
def generate_report(report_template, data_file, output_dir):
"""
生成报告
"""
# 加载Excel文件
wb = load_workbook(data_file)
ws = wb.active
# 获取数据行数和列数
rows = ws.max_row
cols = ws.max_column
# 遍历每一行数据
for i in range(2, rows + 1):
# 获取替换文本
old_text = ws.cell(i, 1).value
new_text = ws.cell(i, 2).value
# 复制模板文件到输出目录
report_file = os.path.join(output_dir, f"{new_text}.docx")
shutil.copy(report_template, report_file)
# 替换文本并保存文件
replace_text_in_docx(report_file, old_text, new_text)
if __name__ == "__main__":
# 输入参数
report_template = "E:/工作/python文件/网格中文名网格分析优化报告-20230519-张文坚.docx"
data_file = "E:/工作/python文件/假数据.xlsx"
output_dir = "E:/工作/python文件/报告输出"
# 生成报告
generate_report(report_template, data_file, output_dir)
```
你只需要将上述代码保存在一个.py文件中,然后在命令行中执行该文件即可生成多份Word报告。其中,report_template参数指定报告模板文件路径,data_file参数指定Excel数据文件路径,output_dir参数指定报告输出目录路径。请确保这些文件和目录存在,并根据实际情况修改参数值。