使用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
    评论
Django是一个用于快速开发Web应用程序的Python Web框架。而python-docx-template是一个Python库,它可以使用Word文档作为模板,然后根据传入的数据批量生成Word文档。在Django,我们可以利用python-docx-template库来实现批量生成Word文档的功能。 首先,我们需要在Django项目安装python-docx-template库。可以使用pip命令来安装该库: ```bash pip install python-docx-template ``` 接下来,我们可以在Django项目创建一个视图函数,用于接收数据并根据模板生成Word文档。在视图函数,我们可以使用python-docx-template库提供的方法将数据填充到Word模板生成最终的Word文档。 例如,假设我们有一个Word文档模板`template.docx`,里面包含了一些需要填充数据的位置,我们可以在Django这样写视图函数: ```python from docxtpl import DocxTemplate from django.http import HttpResponse def generate_word_document(request): # 从请求获取数据 data = request.GET.get('data', '') # 读取Word模板 doc = DocxTemplate("template.docx") # 根据数据填充模板 context = {'data': data} doc.render(context) # 写入生成Word文档 doc.save("generated_document.docx") # 返回生成Word文档给用户 with open("generated_document.docx", 'rb') as f: response = HttpResponse(f.read(), content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document') response['Content-Disposition'] = 'attachment; filename=generated_document.docx' return response ``` 通过上述视图函数,我们可以在Django项目实现批量生成Word文档的功能,用户可以通过传入数据生成他们所需的Word文档。这样我们就可以方便地利用Python和Django来批量生成Word文档,提高生产效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值