使用python修改world文件内容并保证格式不变
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python修改world文件内容并保证格式不变相关的知识,希望对你有一定的参考价值。
背景:由于年底了需要验收项目材料,需要整理各种项目的巡检,怎么从一个模板弄成多份world,这就需要用到 python 了,不仅更改文件的名字,还要把world 里面的日期内容给改掉,如下图所示:
代码逻辑:先遍历时间出列表,然后拼接成名字用来保存world的时候使用,然后用列表时间来替换原来world模板的时间,就完成了,话不多说,直接上代码,都是能够跑的,在那之前记得 pip install python-docx,同时因为替换了world的文件内容,如用老办法,会导致格式变化,所以要使用docx 包里的run方法再遍历判断,剩下的路径和文件名字这种的就自己定义好了,我这图方便用默认的了
# 导入以下系统包和docx包
import platform
import datetime
from docx import Document # 没有包就是 pip install python-docx 进行安装
def get_date_range(begin_date, end_date):
# 定义日期函数
date_list = []
while begin_date <= end_date:
date_list.append(begin_date)
begin_date_object = datetime.datetime.strptime(begin_date, "%Y%m%d")
days1_timedelta = datetime.timedelta(days=1)
begin_date = (begin_date_object + days1_timedelta).strftime("%Y%m%d")
return date_list
# 定义开始、结束日期,这里定义2022年1月份
begin_date = "20211228"
end_date = "20220630"
# 函数调用
date_list = get_date_range(begin_date, end_date)
# 打印输出
for i in range(len(date_list)):
# 文件命名要求一定要
filename = 双实名阻断系统巡检表 + ( + date_list[i] + );
# 截取年
year = date_list[i][0:4]
# 截取月
month = date_list[i][4:6]
# 截取日
day = date_list[i][6:8]
# 拼接后面进行world判断的时间样式
shijian = year + "年" + month + "月" + day +"日"
# 输入巡检表的模板名字,注意面的日期时间内容是否一致
doc = Document(双实名阻断系统巡检表(20220701).docx)
for paragraph in doc.paragraphs:
tmp =
# 使用run防止world中修改了内容后保存文件格式变化
runs = paragraph.runs
for i, run in enumerate(runs):
tmp += run.text
if 2022年07月01日 in tmp:
# 如果存在匹配得字符串,那么将当前得run替换成合并后得字符串
run.text = run.text.replace(run.text, tmp)
run.text = run.text.replace(2022年07月01日, shijian)
tmp =
docx_file_name = filename + "." + "docx";
doc.save(docx_file_name)
else:
# 如果没匹配到目标字符串则把当前run置空
run.text = run.text.replace(run.text, )
if i == len(runs) - 1:
# 如果是当前段落一直没有符合规则得字符串直接将当前run替换为tmp
run.text = run.text.replace(run.text, tmp)
以上是关于使用python修改world文件内容并保证格式不变的主要内容,如果未能解决你的问题,请参考以下文章