vue把页面存为doc_用Python读取doc文档表格

前言

前面的文章中,我们有介绍过Python-docx这个第三方包,基于它开发的docx-tpl对于根据模板批量生成文件有相当方便的地方,甚至我们还利用它开发了一个简单的模拟邮件合并的小程序。 然而,不得不让人遗憾的是,目前在Python的第三方包中,我还没有发现能直接对doc文档进行读取的包,但由于历史原因,在工作中,曾产生过大量的doc文档,且其中有一些还存储着一些表格,如何将这些doc文档中的表格提取出来,就是一个非常麻烦的事,如果只是一个文档还可以手工操作,但面对几百上千的doc文档,根本无法用手工去一一完成。

间接读取doc文档的思路

在查询了相当多的资料后,发现一个可靠的办法是将doc文件转换为docx文档,然后用Python-docx进行读取,通常我们会用office软件打开doc文件再另存为docx文件,其于这个思路也有一些批量转换工具,不过,如果安装了libreoffice这个软件的话,可以直接在命令行调用它来执行转换命令。 下面我们来测试一下用libreoffice的命令行工具转换一个测试文档,文档截图如下:

cce0df77feef91b8c9448305d3c7e477.png

因为要用 libreoffice 进行转换,所以我们先来测试一下 libreoffice 是否安装成功:

d239cfc406c41389e950a5c84f486ca8.png

从上图可知,目前我这台电脑上安装的 libreoffice 版本是 6.4.6.2 ,不过最新的 libreoffice 已经是 7.0.4 版本,界面更加美观。 关于 libreoffice 这里不再多说,同学们只须知道它也是一个类似于 MSOffice 的软件即可,如果想了解多一些,可以直接在它的官方网站上查阅更多信息。 用libreofficedoc文件转换为docx文件的代码如下:

248a376e4ecec7c536c98a21cac3fa28.png

当命令运行结束时,我们会发现在原文件的当前目录下产生了一个同名的docx文件,如下图所示:

05722b2c36a1e5063fd089c3119cf60c.png

打开该 docx 文件,可以看到转换结果:

0fd6d7ec966fee41d3281b4eb27c58c6.png

对比原文档图,可以看出,生成的新的 docx 文档在页面排版方面有一些变化,但内容看起来没有改变。 下面我们来读取该 docx 文档。

读取同名docx文档

Python-docx读取docx文档中的表格代码如下:

af5a5c8303039347dd7dd09b24b86fd5.png

从上述代码可以看出,在生成的新文档中有两个表格,这与我们的文档一致,要读取其中的内容,代码如下:

7bc672e60b6f7ae6e36e7416addaf673.png

将上述代码转换成一个函数,专门来读取当前文档所有的表格,并将其转换成PandasDataFrame对象:

fb87ee79f5184c728a675bee624aff2a.png

7115c3a91fe1edbd820f1b32e27ba2f9.png

将转换后的文件表格中数据读取出来,一共有29条记录,这与我们的原文件是相吻合的。

Python调用命令行

如果用Python来调用libreoffice的命令行,只需要用os模块中的system即可:

972cd61891c4102e71ec2209e0a24647.png

至此,读取 doc 文件中的表格问题就解决了。 需要注意:在我所读取的doc文件中,表格的标题列是有序号字样,如果读者朋友的表格中不具备该字样,还应根据实际情况修改程序。

小结

本文对如何读取doc文件的表格数据进行了研究,并将其功能写成一个函数来输出PandasDataFrame对象。从实现的方法来说,有“曲线救国”的意图——毕竟还是要借助于libreoffice的转换功能才能完成,但从解决问题的角度来看,这是一个值得推荐的方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值