使用python 将excel中数据批量生成word周报

使用python 将excel中数据调用word模板批量生成word周报

背景

日常项目中每周需要召开项目周会,会议纪要和会议周报是必不可少的一项内容,会议纪要要求监理方会后发送给参会方成员,周报为每周在excel表格中新增内容。项目验收环境中有一项内容是需要汇总会议纪要和会议周报,会议纪要每次都已经发布,直接使用即可,会议周报在excel中(此处可能会有人问,为什么会议周报不是每次会后发送出来?历史原因、项目懈怠)立足当下,按目前的情况去完成。

环境

项目版本
office2019
ubuntu22.04.1 LTS
python3.10.4
windows10
wsl1

功能需求

源数据-excel
在这里插入图片描述
模板文件-word
在这里插入图片描述
在这里插入图片描述
功能说明
使用pytohn程序读取weekly.xlsx文件中的数据,调用平台二期建设项目周报.docx文件模板,批量生成周报并保存到output文件夹中
目录说明

项目名称说明
weekly.py处理程序
weekly_3.xlsx源数据
平台二期建设项目周报模板文件
output批量生成的文件目录

程序实现

import pandas as pd
from docxtpl import DocxTemplate
import datetime

def main():
    df = pd.read_excel("weekly_3.xlsx", index_col='序号', engine="openpyxl")
    
    for name, row in df.iterrows():
        print("生成第: ", name)
        start_date = row["开始时间"].strftime("%Y-%m-%d")
        end_date = row["结束时间"].strftime("%Y-%m-%d")
        pro_ans = str(row["问题分析"]).split('\n')
        pro_ans_b = pro_ans[1:]

        doc = DocxTemplate("平台二期建设项目周报.docx")
        dic = dict(
            序号 = name,
            开始时间=row["开始时间"].strftime("%Y-%m-%d"),
            结束时间=row["结束时间"].strftime("%Y-%m-%d"),
            本周工作内容=row["本周工作内容"],
            问题分析=row["问题分析"],
        )
        ix = 0
        for item in range(str(row["问题分析"]).count('\n')):
            ix += 1
            dic[f"case{ix}"] = pro_ans_b[item]
        doc.render(dic)
        doc.save(f"./output/平台二期建设项目周报({start_date}~{end_date}).docx")

if __name__ == '__main__':
    main()

运行

$ python3 weekly.py

效果图
在这里插入图片描述

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值