野生程序员驻场开发的项目总结

前些时日,接了一个win32com的商业项目,工期预计两周,硬是被我干成了三周。于今天终于交付,那就做个复盘吧。

项目概览

一个桌面程序,用来为毕业论文快速设置格式,以提高生产效率。该程序可为不同学校配置不同的格式模板,一篇论文包含以下的模块:

  • 封面
  • 目录
  • 摘要(中英文)
  • 关键词(中英文)
  • 各级标题
  • 正文
  • 参考文献
  • 前言(可能有)
  • 总结(可能有)
  • 声明(可能有)
  • 附录(可能有)
  • 致谢(可能有)
  • 页面设置

也许某些学校还会有别的要求,。

涉及到的格式设置有:

  • 字体
  • 字号
  • 样式
  • 加粗
  • 对齐
  • 行间距
  • 段前距
  • 段后距
  • 首行缩进
  • 悬挂缩进
  • 段落缩进(文本之前,文本之后)

论文各个模块对各种格式几乎都有要求。

需求分析

1、能为不同学校选择不同的论文模块,各个模块可以单独设置必要的格式,并保存为模板;

分析:使用一个面板,展示所有的模板,需要哪个就勾选哪个,该模块的具体格式配置可以通过按钮来唤起子界面进行设置,配置文件保存为json即可。

2、能搜索模板,修改模板;

分析:使用输入框搜索json文件,并加载内容到面板中,子界面的内容则可以保存在内存中,待需要时再渲染到模块格式的界面中

3、批量上传文件,批量设置,以提高效率;

分析:简简单单,上传文件后,文件路径保存到内容中,开始设置格式时传到其他界面去即可

4、能自行设置文件处理后的保存路径;

分析:这个没什么好分析的

5、能自定义同时处理文件的数量(并发设置);

使用该数值去开启多进程,当然,给个默认值最好,8g内存电脑,默认数值为4

6、文件的处理进度要展现在面板上。

要队列通信才能搞定了,每个文件的处理状态都需要掌握

技术分析

1、必须得使用win32com,而且需要使用DispatchEx调度器,配合pythoncom可实现并发。如果使用Dispatch是无法实现并发的,因为这个调度器会接管本地任何一个已经在运行的WPSoffice word客户端,这样就没得玩了;

2、GUI使用PyQt,要熟悉它的信号机制多进程的用法;

3、PyQtwin32com使用不同的进程,win32com是耗时任务,需要使用队列通信,把文件处理的进度同步给PyQtwin32com内部的多进程也需要同步文件处理的进度,假如上传了100个文件,每次处理10个,每当有一个文档处理完毕,就及时补充一个进程,多开一个客户端来跑;

4、使用pyinstaller打包时,需要multiprocessing.freeze_support()的支持,防止软件启动时会无限开启子线程导致电脑卡死。

整个项目最耗时的地方

由于论文对格式的要求很多,很多时间都花在了对论文的处理逻辑上,虽然win32com的商业项目也做了几个了,但每次都感觉很陌生,经验的理解来自于客户,所以一直赶不上客户的需求,每次做win32com项目都有种重头再来的感觉。

成品献丑

技术方面的思考

其实客户去年就找我做过一版,但当时对他们的业务理解太浅,win32com的接口也不熟悉,导致软件执行效率不高。

1、经过一年左右对win32com的接触,有很多现成的方法可以替代原来自己实现的方法,执行效率提升了上去;

2、后端业务逻辑的切割,把文档的处理切割成了数个模块,每个模块之间相互依赖。

(1)比如,有专门处理模板的数据模块,它来负责把模板的数据加工成各种结构,以提高在项目中的通用性;

(2)又如,有专门负责实现格式调整的模板,只负责生产最小单位的格式调整方法,且还有专门的模块生产接口,把格式调整的方法组织成接口以供使用,让功能和接口分离,提高编程效率;除此以外,还有文件读写的模块,负责写入、读取各种json文件等等。

最后

这个软件要想达到完美的状态,时间成本非常大,首先要做的就得把许许多多学校的论文模板综合分析一次,把所有的细枝末叶都考虑进来,提炼出一个最为合理的架构,才有可能实现得了。不过,我感觉这个项目客户很快又要迭代了。

我拉了一个win32com的交流群,入群请加微信 yideng6618,备注交流群

你可能感兴趣的:(win32com操作word,PYTHON,python,win32com)