Word 指定模板指定位置数据插入
应用场景:房贷 - 收入证明的开具
需要进行住房贷款的单位员工进行收入证明的开具,收入证明需要使用其公司公章,故而该收入证明文件有固定的格式样式,人力资源进行审核,领导审批方可于公章管理部门进行证明文件的公章加盖
确定开发环境,用户内网使用的办公软件(office 或 WPS)
以客户内网使用 WPS 为例:
获取数据
员工自己发起申请,人资登录系统进行所有员工申请单 Excel 导出,本地处理从另一数据表中获取员工工资
因内网使用 WPS,仅能使用 padas 进行数据处理
#获取对应的员工姓名 name,工号 number,工资 money,身份证号 name_number,住址 address,时间(大写的中文)date_name
Word 模板文件复制到指定文件夹下
self.gv_1 = r'E:\data'
import os
def get_table_load():
load = self.gv_1
list = os.listdir(load)
table_load = 0
for data in list:
if '员工收入证明文件申请' in data:
table_load= os.path.join(load,data)
return table_load
table_load = get_table_load()
word 文件路径获取, 已新建并存放到指定文件夹下
import os,shutil
def get_load():
load = os.path.join(self.gv_1,'证明文件')
wd_load = os.path.join(load,str(name+'_'+number+'.docx'))
pdf_load = os.path.join(load,str(name+'_'+number+'.pdf'))
#判断该文件是否存在
if os.path.exists(wd_load):
os.remove(wd_load)
shutil.copy(table_load,wd_load)
return wd_load,pdf_load
wd_load,pdf_load = get_load()
Word 指定位置数据插入, 用唯一值替换模板中需要替换的数据
def get_write_wd(wordpath,date_name):
#获取需要替换的特征值及数据
old_address = '111'
new_address = address
old_name = '222'
new_name = name
new_name_number = name_number
old_name_number = '333'
new_money = money
old_money = '444'
new_date = date_name
old_date = '555'
#获取接口
word = Dispatch('Word.Application')
#判断该Word是否存在
if os.path.exists(wordpath):
# 获取文本对象
doc = word.Documents.Open(wordpath)
#获取全部数据对象
word.Selection.Find.ClearFormatting()
word.Selection.Find.Replacement.ClearFormatting()
#查找特征值替换
word.Selection.Find.Execute(old_address,False,False,False,Fasle,Fasle,True,1,True,new_address,2)
word.Selection.Find.Execute(old_name,False,False,False,Fasle,Fasle,True,1,True,new_name,2)
word.Selection.Find.Execute(old_name_number,False,False,False,Fasle,Fasle,True,1,True,new_name_number,2)
word.Selection.Find.Execute(old_money,False,False,False,Fasle,Fasle,True,1,True,new_money,2)
word.Selection.Find.Execute(old_date,False,False,False,Fasle,Fasle,True,1,True,new_date2)
doc.Close()
word.Quit()
get_write_wd(wd_load,date_name)
厉害👍
这个必须点赞👍
👍
赞一下 👍
方便啊
mark 一下
那必须给你👍🏻哈哈哈
好久没弄这个了,从内网里面一个个外网敲出来的 😂
兄台,代码块包裹一下啊哈哈