项目介绍
我朋友要批量写一堆《告知用户函》,他们有word模板,但是里面的数据是从内部系统中导出来的excel。
问我能不能实现这个需求,我第一反应想到的是office的邮件合并,但是还是略显麻烦,所以自己动手用python做了一个。
这个项目有两个版本,一个是python封装为exe,一个是在线web。
打包的exe,由于依赖问题,会出各种各样的bug,后来又改为了web形式。
我们先来看看线上版的。
地址:https://treeworld.com.cn/doc_batch/
效果展示与使用说明
- 上传excel
- 上传word模板
- 根据模板,及excel中的数据,批量生成word
- 压缩并下载
场景
- 邀请函
- 工资条
- 告知用户书啥的
开发流程
好了,我们来看一下怎么实现的。
项目分为前后端,前端就是简单的html,没用到vue之类的。
先说前端,其实就是怎么读取文件、发送,我用了一个叫fileinput的库,他可以读取文件,校验拓展名。
https://github.com/kartik-v/bootstrap-fileinput/
后端因为之前用的python-docx做的文档转换,所以干脆就用flask提供web服务。
整体目录
├─outputFileFolder - 存转化好的word (定时删除)
├─receiveFileFolder - 存接收的文件
├─zipFileFolder - 存压缩文件
├─core.py - 核心业务逻辑
├─server.py - flask
└─web
├─css
├─js
├index.html - 前端页面
暴露三个接口
- 接收上传的文件;
- 开始生成
- 提供压缩文件的下载
流程
- 接收文件
- 逐行读取excel readExcel()
- 搜索word模板的关键词,替换
- 批量生成
- 压缩文件夹
主要讲一下怎么搜索与替换 {数字}这个过程吧。
在python-docx这个库里,doc文档分为 paragraghy和table