需求
根据Word模板,生成数据报告。
发现
升级python3的pip,以管理员身份运行:pip3 install --upgrade pip
python3操作Word的库:
pip3 install python-docx、import docx:只对windows平台有效
pip3 install pypiwin32、import win32com:跨平台,但无法处理doc格式的word文本,doc格式不是基于xml的
pip3 install textract、import textract:它同时兼顾“doc”和“docx”,但安装过程需要一些依赖。
在安装textract的时候,提示缺少swig.exe:error: command 'swig.exe' failed: No such file or directory install textract。下载swig.exe的Windows版,注意配置完path之后要记得重启cmd。
但实际使用中又遇到一些问题,主要是python对Windows平台的不兼容问题。比如echo在Windows上是一个内置在cmd的命令,比如Windows没有fork等等问题,比如Windows上没有antiword,而实际上textract就是调用了antiword来处理Word。
所以我打算先将doc转为docx,然后再用python-docx处理。在使用docx直接输出所有段落的时候发现很多表格都不见了:
import docx
def read_docx(file_name):
doc = docx.Document(file_name)
content = '\n'.join([para.text for para in doc.paragraphs])
return content
这是因为表格和段落分别使用了不同的对象进行存储。
经过两天的学习,终于使用docx库完成了对docx格式的文件的提取信息,以及自动化编辑word模板。
官方资料:
详细编程需求以及解决过程
根据一个段落标题,定位位于其下的表格
因为paragraphs和tables是完全分开的,所以需要其他的办法,在谷歌之后找到答案:
其他资料: