一、需求

工作中经常要做一些重复性质的工作,比如写一些表单,而这个表单从打开word文档,找到对应的文字进行修改,耗时!同时也很容易遗漏一些关键的信息。

这种情况主要出现在当下的财务报销上面,一个报销单分为N个表格,里面重复的录入时间、事由等信息,一不小心就会弄错,我在想,既然Pyhton可以帮助完成自动化操作,不如就写一个模版,填入关键信息,让程序帮我自动更新,然后按时间另存一个文件,这不就完美了吗?

理论可行,就实际操作一番。

二、实现

经查询,使用的是docxtpl这个库,通过pip install 命令安装

from docxtpl import DocxTemplate
import os

print("当前工作目录:", os.getcwd())

# 加载Word模板
doc = DocxTemplate("template.docx")

# 获取用户输入的关键词
keywords = {}
num_keywords = int(input("请输入要替换的关键词数量:"))
for i in range(num_keywords):
    key = input(f"请输入第{i+1}个关键词名称:")
    value = input(f"请输入第{i+1}个关键词对应的值:")
    keywords[key] = value

# 替换模板中的变量
doc.render(keywords)

# 保存为新文档
output_file_name = input("请输入生成的新文档名称:")
doc.save(f"{output_file_name}.docx")

在template.docx这个文档里,使用

{{key}}

的方式,标注字符key,然后会覆盖value值,同时保存到新的文档,整体就实现了。

三、需要注意

Python的运行目录,在使用VSCoder的时候,可以方便的通过运行按钮来运行Python文件,但是这个运行,是基于当前工作区执行的,也就是运行A目录下的子目录B里的py文件,其实工作目录还是在A,这样,生成的文件会存放在A目录,如果要在B目录里的话,我的做法是通过CMD到B目录里,然后通过python x.py命令运行。