效果
先展示下基本的效果,首先我们只有一个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 os
import docx
from 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 = 0
wd.DisplayAlerts = 0
#打开doc文档,必须给一个绝对路径
doc=wd.Documents.Open(file_abs_path)
#另存为docx
doc.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.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) #打印整行数据
'''
往excel中填写数据,在读取word时把需要的数据存储下来,
在写入表格中的时候填入即可。
'''
# 导入模块
from openpyxl import Workbook
from openpyxl import workbook
from openpyxl import load_workbook
#新建excel
wb = 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 获取下载链接。