模板 生成word_python办公自动化(一)批量生成word

模板 生成word_python办公自动化(一)批量生成word_第1张图片

工作需要制作几十个同模板word,研究学习了一下python批量生成word文档,生成的word保存在同一个文件夹里,为了方便发给别人,末尾加上了压缩步骤。为了马赛克工作内容,简化为学生成绩通知单展示。

只需要复制代码,修改部分文件名,菜鸟亦能快速上手,对懒人极其友好!

excel信息统计如下:

模板 生成word_python办公自动化(一)批量生成word_第2张图片

word模板如下,双括号处为待填写的部分(给双括号加粗、红色、下划线会影响word结果):

模板 生成word_python办公自动化(一)批量生成word_第3张图片

结果如下:(以易烊千玺为结果展示)

模板 生成word_python办公自动化(一)批量生成word_第4张图片
  • 初始有个装信息的excel模板word,生成结果为通知单合集压缩包

模板 生成word_python办公自动化(一)批量生成word_第5张图片

干货来了!!!!

代码如下:

一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹

from docxtpl import DocxTemplate
import pandas as pd
import os
zpath=os.getcwd()+''
zpath=r'C:UsersXXXXXXDesktoppp'+''
file_path=zpath+r'通知单合集'

二、遍历excel,逐个生成word(form.docx是前面的模板)

try:
    os.mkdir(file_path)
except:
    pass

tpl = DocxTemplate(zpath+'form.docx')
autho = pd.read_excel(zpath+'autho.xlsx')
name = autho["name"].str.rstrip()
classs = autho['classs'].str.rstrip()  # str.rstrip()用于去掉换行符
chi = autho['chi']
math = autho['math']
eng = autho['eng']

# 遍历excel行,逐个生成
num = autho.shape[0]
for i in range(num):
    context = {
       "name": name[i],
       "classs": classs[i],
       "chi": chi[i],
       "math": math[i],
       "eng": eng[i]
    }
    tpl = DocxTemplate(zpath+'form.docx')
    tpl.render(context)
    tpl.save(file_path+r"{}的成绩通知单.docx".format(name[i]))

三、把word所在文件夹打包压缩,便于发送。

import zipfile
# 设定压缩后的压缩包地址和名称
zipName = zpath + '通知书.zip'
z = zipfile.ZipFile(zipName,'w',zipfile.ZIP_DEFLATED)
for dirpath,dirnames,filenames in os.walk(file_path):
    for filename in filenames:
        print(filename)
        z.write(os.path.join(dirpath, filename),filename)
z.close()
# 要记得close

附解压:

#将打包的文件解压
f = zipfile.ZipFile(zipName, 'r')
for file in f.namelist():
f.extract(file, path)

以上就是办公自动化的分享第一篇,下一步计划学习excel模板自动填表,把数据自动填到奇形怪状的模板表里。

你可能感兴趣的:(模板,生成word)