木头MT 发表于 2021-8-1 11:00

python 批量生成word文件

最近看到有替换word的数据的工具,顺手发一个生成word文件的
可以用来批量生成word文件
比如批量填一个什么申请书啊
生成一下各种证书啊
最主要就是减少重复作业
偷懒万岁!!!
具体是用word的mailmerge功能
先制作word模板
点击 插入》文档部件》域

选择邮件合并 输入名称 推荐使用数据的字段名

得到下图模板



现在去随便弄几组数据

我这里用的是csv
看个人喜好吧
贴一下代码
##########################
#      author: mtou      #
##########################

from mailmerge import MailMerge
import pandas as pd

def rd_data(file_path):
    data=pd.read_csv(file_path, encoding='gbk',header=None)# 读取取csv文件 且读取中文
    return data
def mk_dict(data,i):
    d = dict(zip(data.loc, data.loc))
    return d
def sd_data(file_path,data_dict,save_path):
    doc = MailMerge(file_path)
    print("Fields included in {}: {}".format(file_path, doc.get_merge_fields()))
    doc.merge(**data_dict)
    save_path = save_path + "%s.docx" % data_dict['name']
    doc.write(save_path)
    print('Saved file to the path :%s'%save_path)
    return save_path
if __name__ == '__main__':
    file_path=r'模板.docx' #模板路径
    save_path=r'请假条/' #文件保存路径
    data_path=r'data.csv' #数据文件路径
    data=rd_data(data_path)
    rows = data.shape - 1
    i = 1
    while i <= rows:
      mydict = mk_dict(data, i) #每一行数据都制作成一个字典
      sd_data(file_path, mydict,save_path) #发送数据到docx
      i+=1
    print('Finish')
运行一下




打完收工
附上文件
咳咳 喜欢的话请咳咳DDDD
偷懒万岁!!!

marman 发表于 2021-8-1 11:33

好东西都是懒人发明的

木头MT 发表于 2021-8-1 11:09

angle951 发表于 2021-8-1 11:06
感谢楼主,这有点离谱啊哈哈哈哈,太能偷懒了

如果你是文秘类工作 给客户发个邀请函 咱这样偷个懒是不是就很香 做完就可以摸鱼

angle951 发表于 2021-8-1 11:06

感谢楼主,这有点离谱啊哈哈哈哈,太能偷懒了

angle951 发表于 2021-8-1 11:16

木头MT 发表于 2021-8-1 11:09
如果你是文秘类工作 给客户发个邀请函 咱这样偷个懒是不是就很香 做完就可以摸鱼

那傻13学生会也要这些玩意儿,就是拿来做邀请函,系主任鬼迷鬼眼的啥都想要弄
这东西太方便了,一件格式化

yjn866y 发表于 2021-8-1 11:38

tve 这个可以偷。。。

xrdmwan 发表于 2021-8-1 11:40

有意思,把邮件合并的分割功能解决了!

XiaoXin10 发表于 2021-8-1 11:42

收藏了,需要的时候再来

shen12wang 发表于 2021-8-1 12:08

看着就觉得香

哆啦A梦 发表于 2021-8-1 12:15

office自带的功能,还整那么麻烦?
页: [1] 2 3 4 5 6
查看完整版本: python 批量生成word文件