python 中 读取Word 并转多sheet 的Excel

1.读取.doc 或者.docx

插件 优点 缺点
python-docx 跨平台 只能处理.docx
pypiwin32 可以处理.doc 和.docx 只能用于windows 平台

以docx结尾的word文件

首先是安装模块
pip install python-docx
读取段落或者是读取文档中插入的表格

from docx import Document
path = r"E:\docx.docx" 
document = Document(path)
#读取段落
for paragraph in document.paragraphs:
     print(paragraph.text)
#读取文档中的表格(包括合并的单元格)
for table in doc.tables:
    for row in table.rows:
        for cell in row.cells:
            print(cell.text)

以doc结尾的文件

首先是安装模块
python -m pip install pypiwin32
读取.doc

from win32com.client import Dispatch

word = Dispatch('Word.Application')     # 打开word应用程序
# word = DispatchEx('Word.Application') # 启动独立的进程
word.Visible = 0        # 后台运行,不显示
word.DisplayAlerts = 0  # 不警告
path = r'test.doc'
doc = word.Documents.Open(FileName=path, Encoding='gbk')

for para in doc.paragraphs:
    print(para.Range.Text)
doc.Close()
word.Quit

pypiwin32 在表格的读取上并不好用,所以将.doc格式的文件转换成.docx 格式, 然后再通过python-docx 来处理

import win32com.client as wc 
def doSaveAas():
    word = wc.Dispatch('Word.Application')
   # 目标路径下的文件
    doc = word.Documents.Open(r'test.doc') 
   # 转化后路径下的文件
    doc.SaveAs(r'E:test.docx', 12, False, "", True, "", False, False, False, False) 
    doc.Close()
    word.Quit() 
doSaveAas()

2.转换成多个sheet 的excel

#导入docx 插件
import docx
import pandas as pd
from pandas.core.frame import DataFrame
##定义write 输出文件名字
writer = pd.ExcelWriter('test1.xlsx')
#目标路径
path=r"test.docx"
doc = docx.Document(path)
i=0
for paragraph in doc.paragraphs:
    i=i+1
    print("第{}段落".format(i))
    print(paragraph.text)
    

#输出例子,观察数据发现,偶数段落是需要处理的数据名称,奇数段落是分类(要观察自己的数据找规律)
#根据规律我们可以将数据分成5组,也就是n=i/2,那么每一组就是 2n,2n+1,前两组数据无用,可以扔掉,直接从第三组开始;
for n in range(0,int((i/2)-2)):
    #获取到奇数段,作为列名
    colName=doc.paragraphs[2*n+4].text
    #获取到偶数段,使用顿号分割,作为内容
    contents=doc.paragraphs[2*n+5].text.split("、")
    #将列名和内容组成一个df
    df=DataFrame({colName:contents})
    #使用列名作为sheet 名字,索引不输出。
    df.to_excel(writer,sheet_name=colName,index=False)
writer.save()

数据样式

例子.png

转换结果

结果.png

你可能感兴趣的:(python 中 读取Word 并转多sheet 的Excel)