网上介绍这两种格式转换的文章很多, 发现很少有实现指定位置替换并将所有内容生成在一个文档的,综合前辈的经验探索出了解决方案,希望能给有需要的小伙伴帮助。
我们的目标就是将excel中的案例名称、步骤描述和预期结果内容填充到word中的对应位置。这里要用到的是python的pandas和docxtpl库。docxtpl 主要有两个软件包:python-docx 用于读取、写入和创建子文档;jinja2 用于管理插入到模板 docx 中的标签,需要二者结合来实现。
先了解一下jinja2的用法(下面的内容是写在word模板里的,不是代码噢,这里为了更直观一点):
(%p start %)#需要替换的内容范围开始
Here is content
(%p end %)#需要替换的内容范围结束
接下来开搞!
import pandas as pd
from docxtpl import DocxTemplate
#使用pandas读取excel原文件数据
df = pd.read_excel(r'F:\测试案例.xlsx', sheet_name='no2')#这里的sheet_name是指定工作表
# 把excel原文档数据通过jinja2模板匹配后,保存到word文档
tpl = DocxTemplate(r'F:\模板.docx')
tpl.render({'ps': df[["案例名称", "步骤描述", "预期结果"]].values.tolist()})#参数是excel的列名
tpl.save(r'F:\测试执行截图.docx')
执行完毕后会在指定文件夹目录生成一个新word文档,是我们指定的文件名称