效果
先展示下基本的效果,首先我们只有一个doc文件,与python的代码:
我这里用的是doc的word文档,文档内表格如下:
通过python读取后打印:
我这里没有专门按照表格内往excel中写,只是随意写了几个数据:
因为根据需要不同,要写的内容也不同,不过方法是差不多的,就是在读取word时把需要的数据存储下来,在写入表格中的时候填入即可。
程序运行完之后会生产docx文件与xlsx文件:
代码部分:
首先要先安装相关的模块:
使用docx文件需要加载:
pip install python-docx
使用doc文件需要加载:
pip install pywin32
使用xlsx文件需要加载:
pip install openpyxl
加载模块出现问题,或者超时之类可以参考我这篇文章:更换pip源等
接下来是代码部分,注释也都齐全:
# -*- coding:utf-8 -*-import osimport docxfrom docx import Document #导入库from win32com.client import Dispatch'''获取绝对地址,如果是doc的转换为docx。'''#文件相对路径file_path = "../TEST.doc"file_name, file_extension = os.path.splitext(file_path)#获取文件名、文件扩展名file_abs_path = os.path.abspath(file_path) #通过相对路径获取绝对路径if file_extension in [".doc"]:#打开word应用程序wd=Dispatch("Word.application")#后台运行wd.Visible = 0wd.DisplayAlerts = 0#打开doc文档,必须给一个绝对路径doc=wd.Documents.Open(file_abs_path)#另存为docxdoc.SaveAs(file_abs_path+r"x",12)#12表示docx格式#关闭文档doc.Close()#退出word应用wd.Quit()file_abs_path = file_abs_path+r"x"#更新路径为docx的路径'''读取word的表格内的数据,并按行打印。'''word = Document(file_abs_path) #读入文件tables=word.tablesfor 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) #打印整行数据'''往excel中填写数据,在读取word时把需要的数据存储下来,在写入表格中的时候填入即可。'''# 导入模块from openpyxl import Workbook from openpyxl import workbookfrom openpyxl import load_workbook#新建excelwb = Workbook() # 实例化ws = wb.active # 激活 worksheet###打开已有excel表格##wb = load_workbook('../TEST.xlsx')##ws = wb["Sheet1"]for i in range(1,8,1):ws.cell(row=i, column=i, value=10)#row:行 column:列 value:内容wb.save('../TEST.xlsx') print('写入完成!')
需要整个工程的话可以加我公众号来获取:
关注公众号:逸趣汇
微信号:yiquhui666
发送:010703 获取下载链接。