python操作word文档

需求

根据Word模板,生成数据报告。

发现

升级python3的pip,以管理员身份运行:pip3 install --upgrade pip

python3操作Word的库:

  • pip3 install python-docximport docx:只对windows平台有效
  • pip3 install pypiwin32import win32com:跨平台,但无法处理doc格式的word文本,doc格式不是基于xml的
  • pip3 install textractimport 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模板。

项目地址:data_report

官方资料:

  • python-docx文档
  • win32com文档

详细编程需求以及解决过程

根据一个段落标题,定位位于其下的表格

因为paragraphs和tables是完全分开的,所以需要其他的办法,在谷歌之后找到答案:

  • https://github.com/python-openxml/python-docx/issues/222
  • https://github.com/python-openxml/python-docx/issues/40
  • https://github.com/python-openxml/python-docx/issues/276

其他资料:

  • https://blog.csdn.net/u011995719/article/details/77178093
  • https://blog.csdn.net/vip88886666/article/details/79596113
  • https://blog.csdn.net/baidu_39416074/article/details/80926443
  • https://blog.csdn.net/nicccccc/article/details/76147056
  • https://wenku.baidu.com/view/0b1c5a2359fb770bf78a6529647d27284b73370b.html?re=view
  • http://yshblog.com/blog/40
  • https://blog.csdn.net/zhengyikuangge/article/details/80451424
  • https://clay0x1.top/2018/08/13/openpyxl%E5%92%8Cwin32com%E4%BD%BF%E7%94%A8%E6%80%BB%E7%BB%93/
  • https://zhuanlan.zhihu.com/p/32944388
  • http://www.voidcn.com/code/p-dvwzvjkr-m.html
  • https://my.oschina.net/duxuefeng/blog/64137
  • https://www.cnblogs.com/youxin/p/3548647.html
  • https://www.cnblogs.com/hupeng1234/p/6920129.html
  • https://www.cnblogs.com/whchensir/p/5768030.html
  • http://landcareweb.com/questions/32546/ru-he-shi-yong-python-docxti-huan-wordwen-dang-zhong-de-wen-ben-bing-bao-cun
  • https://zhuanlan.zhihu.com/p/27135983
  • https://www.yinyubo.cn/?p=352
  • https://www.zhihu.com/question/64235925
  • https://juejin.im/post/5ae9259c6fb9a07ab110f940
  • https://bbs.csdn.net/topics/390824187
  • http://www.bioinfo-scrounger.com/archives/693
  • https://www.twblogs.net/a/5b7c74922b71770a43db0f50https://blog.csdn.net/u010541307/article/details/52862674
  • https://blog.csdn.net/u012922806/article/details/85096074
  • https://www.twblogs.net/a/5b7c74922b71770a43db0f50
  • https://www.cnblogs.com/zhuluqing/p/8445901.html
  • https://www.zhihu.com/question/24330579
  • https://codeday.me/bug/20180828/235270.html
  • https://my.oschina.net/zxcholmes/blog/484789

你可能感兴趣的:(python操作word文档)