缘起
有朋友拜托写段程序,根据系统导出的txt文件和Word模板生成文档。
txt部分内容:1
2
3
4
5
6
7
8
9
10
11
12ersonInfo:
id=3XXXXXXXXXX
accountUid=XXXXXXXXXXXXXXXXXXXXXXX
createDate=2017-01-16 14:44:37.0
name=王XX
idNo=61XXXXXXXXXXXXXXX
Project:
id=1XX
name=XX
projectId=1XXXXXXXXXXXX
createDate=2015-12-14 17:39:50.0
把Word中相关字段替换成txt中的值。
思路
- txt的格式很像INI文件,把以冒号结尾的项处理成方括号,另存为.ini,再用Python自带的configparser读取。
- 使用docx库操作Word文档
难题
1.pip install docx
装好包后,运行代码提示:1
2
3File "/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/docx-0.2.4-py3.3.egg/docx.py", line 30, in <module>
from exceptions import PendingDeprecationWarning
ImportError: No module named 'exceptions'
在爆栈找到解决方案:docx包不兼容Python 3,卸载后,改用pip install python-docx
安装即可正常使用
2.生成的新Word文档中,原有的图片丢失。
翻了docx的API文档,它把文件中的每一段作为一个paragraph,每个paragraph分为许多不同的run,同一句话中,如果字体、大小、粗细等不同,也算不同的run。不知道这图片是怎么算的。只要操作过一次文字,图片就会丢失。
替换之后再用代码插入图片。
3.先if再替换,有许多地方没有替换成功。
没想明白怎么回事,去掉if,不管有没有字段,全部替换。
代码
1 | #! python3 |