将 doc 文件转为 docx 文件后取其中表格数据
经验分享:将 doc 文件转为 docx 文件后取其中表格数据
今天做项目的时候碰到了一个需求是取 doc 表格数据,直接在 Pycharm 中搞了一下,运行了一下可以初步达到效果,给大家分享一下
如果大家有别的更好的办法,也欢迎在评论区或开贴讲解一下。(环境为 Python3)
1. 导入包
这里有个坑是 python3 直接 pip 的 docx 包是不能用的,其中没有 Document 方法,运行时也会报一个找不到模块的错误。解决方法见此链接 (其中 whl 已经更新到 0.8.10 版本):
https://blog.csdn.net/jiangjieqazwsx/article/details/80326214
from docx import Document
import os
from win32com import client as wc
2.Doc 转 Docx
因为只找到了取 Docx 中表格的方法所以就先把 Doc 转 Docx,实际原理就是另存为后删除源文件
def change_doc_to_docx(docpath): # doc转docx
'''
@param : docpath 传入和传出文件夹的路径
@return : None
'''
word = wc.Dispatch("Word.Application")
doc = word.Documents.Open(docpath)
# # 将文件名与后缀分割
rename = os.path.splitext(docpath)
# 将文件另存为.docx
doc.SaveAs(rename[0] + '.docx', 12) # 12表示docx格式
doc.Close()
os.remove(docpath)
word.Quit()
3. 取 Docx 中表格数据
这步其实很简单,后面取出数据就根据实际需求来选择操作方式即可,因为我这只是初版,故只打印到控制台。
def get_docx_table(Path): #取docs中表格
doc = Document(path)
tables = doc.tables
for i in range(len(tables)):
tb = tables[i]
# 获取表格的行
tb_rows = tb.rows
# 读取每一行内容
for i in range(len(tb_rows)):
row_data = []
row_cells = tb_rows[i].cells
# 读取每一行单元格内容
for cell in row_cells:
# 单元格内容
row_data.append(cell.text)
print(row_data)
回帖内容已被屏蔽。
牛啊牛啊 👍
马上发布的新版本 2021.1.0 里就有文件格式转换的组件啦哈
😆
GREAT
哈哈哈哈,互相学习,共同进步 😆
收藏,感谢。
哈哈哈哈哈有用就好
学习了
那还真巧了 😄
看到写的读取行内容,正好用到
😆
手动点赞!
😆大佬见笑了
666