0.0 背景
最近朋友有两个工作上小的需求,需要找外包开发个程序,想要一个桌面应用。他的需求是用模板根据不同用户的信息生成不同的合同,另一个本质就是一个计算器需求,根据几个变量参数计算税金的结果。
1.0 实现方法
第二个计算器没有什么特殊的,第一个根据网上现有的一些库看了看不同的实现方法,决定用一个比较简单去操作且性价比很高的方法。首先语言可以有多种选择,并且每种实现都会有对应的库来搞定这个需求。
- JS + Electron,使用DocxTemplater(模板生成doc)、libre office(转化成pdf)
- python + QT5,使用python-docx(模板生成doc)、docx2pdf、openpyxl
这次使用了第二种方法来实现,因为电脑没有配置electron一套的开发环境,就直接用python来实现了。这个方法的缺点就是有些局限,没法多端同步需要重写开发。QT的使用我觉得用处不大,目前仅仅是一个启动和一个生成文件名的显示,其实不用也可以,先留着给计算器需要的时候用吧。
2.0 使用方法
- main.exe 脚本程序
- 1.docx 模板(支持多模板生成)
- data 数据生成表格(名称不能更改)
将main.exe文件放在项目工程的一级目录下,运行后点击生成即可。同级目录下的DocResults和PdfResults分别存放生成后的输出文件,没有此文件夹会先自动创建一个。
2.1 data数据结构
1.docx
data.xlsx
data表中表头字段除了#模板号外需要与替换模板中一对一匹配,第一列为使用的模板参数,如需支持多个模板即创建同名模板放置在1级目录即可。只需维护好模板和data的对应即可,每一次生生成都会全量更新即每次更新都为最新结果。
后续优化
- 不确定数量很多时会不会有问题,使用多线程进行生成操作
- 对源码进行一个整理重构,使用QT信号更新UI。
- 后续会将脚本上传Github
- 第一种实现方案也放上参考链接 juejin.cn/post/709277…