python读取word文件内容_[python]读取word文档中的数据,整理成excel表

本文介绍如何使用python-docx和pandas将20多个包含多个子表的Word文档转换为Excel,实现数据从Word到Excel的流动。通过pywin32将.doc转换为.docx,然后定义一个DocProc类,处理Word文档中的表格,提取信息并转换为DataFrame,最终合并到Excel文件。
摘要由CSDN通过智能技术生成

在之前的文章[1] [2]中,我用python-docx这个包读取外部数据,驱动了word文档的更新,相当于是实现了Excel数据往word文档的数据流动。实现的方式比起之前依靠vba用Excel驱动word更新这个文章中说的要更可靠一些。

最近遇到了另外一个问题:为了收集教师材料,向20多个同事发放了一份资料收集表。表格大概长下面这样。可以看到里面有多个子表,里面包含了发表的文章,在研的项目,获得的成果,诸如此类的内容。现在要把这20多份表格的内容分门别类的整合成多个工作表。

图1

这其实就是数据从word往excel的流动。同样的,也可以用python-docx包加上一点pandas来实现。主要分下面几步

1. 程序与文件的文件结构

工作文件夹

|- doc2docx.py

|- grab_docxcontent.py

|- doc_files\

|- word_doc1.doc

|- word_doc2.doc

...

|- word_doc20.doc

|- rst\

收集上来的word文档统一放在doc_files文件夹里,两个python代码放在工作文件夹中。

2. 把.doc文件转换成.docx文件

python-docx包就像名字说的,可以处理docx文件,但是doc文件没法处理。所以就需要把20多个word文档中的doc文件转换成docx文件。*2020年了,2020年了呀同志们,再过3年03版本的office这个余孽就已经20岁了啊,tm还有人在用doc格式啊!*不管怎么说,既然有问题,总是要想办法去解决。解决的方式也不难,这里主要写windows环境下的处理方式参考来源

下面的代码(doc2docx.py)主要用到了pywin32这个包,通过win32com控制系统里已经安装好的word程序实现doc往docx的转换。所以务必先用pip装好pywin32

import os

import win32com.client

basedir = 'doc_files'

word = win32com.client.Dispatch('Word.application')

word = win32com.client.Dispatch('Word.application')这一行通过win32com让python可以控制word程序,接下来会反复的调用word这个对象

从doc往docx的转换其实并不复杂,无非是先1. 打开一个word文档, 2. 另存为docx文件,然后3. 关闭这个word文档,在代码里也就是三行而已

doc = word.Documents.Open(ori_path_abs)

doc.SaveAs2(conv_path_abs, FileFormat=16)

doc.Close()

顺带一提,如果是想把doc

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值