【python】word的文件表格批量转execel
【python】word的文件表格批量转execel由于工作需要隔一段时间都要把word上的相同格式的表格登记到Excel上去,为了节省时间,网上拼凑了些代码,需要的请拿走。
需要用到的包或库
docx,xlwt,os,pywin32
思路:
1.利用docx和xlwt,完成docx文件的读和excel的写(没有设置excel的格式,需要的请自己填充代码)
2.利用os读出所有的文件名,在加上路径,用于遍历文件实现循环
3.利用pywin32,模拟word程序,打开doc文件,另存为docx文件,实现doc→docx。(网上说【docx】库不能读doc文件,所以要doc转换成docx)
这是我的表格样式:
来文单位Xxx1
受文单位Xxx
收文时间2xxxx年x月x日16:00
内容摘要:Xxx3领导批示:
拟办意见: 4Xxxx,xxxxxxxxxx。Xxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxxxxx。Xxxx。
运行结果:
"C:\Program Files\Python39\python.exe" C:/Users/59564/Desktop/处理代码/docx2excel.py
下面是文件里的内容,好像贴不会excel。。图片贴不了,知道成功就行了。
来文单位 收文时间 内容摘要 拟办意见
Xxx1 2xxxx年x月x日16:00 Xxx3 "
4Xxxx,xxxxxxxxxx。
Xxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxxxxx。
Xxxx。
"
Xxx1 2xxxx年x月x日16:00 Xxx3 "
4Xxxx,xxxxxxxxxx。
Xxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxxxxx。
Xxxx。
"
Xxx1 2xxxx年x月x日16:00 Xxx3 "
4Xxxx,xxxxxxxxxx。
Xxxxxxxxxxxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxxxxx。
Xxxx。
"
下面是代码:
from docx import Document
import xlwt
import os #用于获取目标文件所在路径
from win32com import client as wc #导入win32com包中的client模块
#获取文件列表的函数,输入的文件夹位置在此函数的path中设置
def get_files_path(file_type):
path="C:\\Users\\59564\\Desktop\\外网\\" # 文件夹绝对路径,也就是你存放doc文件或者docx文件的文件夹
files=[] #为列表变量
for file in os.listdir(path):
if file.endswith(file_type): #排除文件夹内的其它干扰文件,只获取".doc"后缀的word文件
files.append(path+file)
return files
#将doc转为docx的函数
def doc2docx(files):
word = wc.Dispatch("Word.Application") # 打开word应用程序
for file in files:
doc = word.Documents.Open(file) #打开word文件
doc.SaveAs("{}x".format(file), 12)#另存为后缀为".docx"的文件,其中参数12指docx文件
# format函数这是一种字符串格式化的方法,用法如str.format()。
#基本语法是通过 {} 和 : 来代替以前的 % 。
#以下展示两种主要用法:
#(1)如:语句print("{:.2f}".format(3.1415926)),它的输出为3.14,可以看出命令为保留两位小数点。
#(2)如:语句"{1} {0} {1}".format("hello", "world"),它的输出为'world hello world',可以看出format为他们设置了位置。
doc.Close() #关闭原来word文件
word.Quit()
print("完成!")
new_workbook=xlwt.Workbook() #新建工作簿
worksheet=new_workbook.add_sheet('Sheet1') #在工作簿中新建工作表Sheet1
worksheet.write(0,0,'来文单位') #A1单元格内容为“来文单位”
worksheet.write(0,1,'收文时间') #B1为。。。
worksheet.write(0,2,'内容摘要')
worksheet.write(0,3,'拟办意见')
#这里是用来把doc文件转成docx文件,如果你的word文件是doc文件的话,把下面的#删掉就好了
#file_type='doc'
#files=get_files_path(file_type)
#doc2docx(files)
file_type='docx'
files=get_files_path(file_type)
i=1 #i=1代表从Excel表格中第二行开始
for file in files:
document= Document(file)
all_table=document.tables #把docx文件中所有的表格读入到all_table中
#for table in all_table: #遍历所有表单,因为我就1个表,所以没用它,用的话,下面table=all_table清删掉,其余行移入循环内,可能还有其他更改
table=all_table #只取第一个表,因为我的Excel就1个
worksheet.write(i, 0, table.cell(0,1).text) # table.cell(0,1).text代表docx表格第1行第二列的内容,这里没有设置excel的格式,需要的请自己填充代码
worksheet.write(i, 1, table.cell(2,1).text) #要注意合并单元格是按不合并的来写位置
str_1=table.cell(3, 0).text.split(':\n',1) #因为单元格里有不需要的内容,所以添加了split,只保留特定的某些文本
worksheet.write(i, 2, str_1)
str_2=table.cell(4, 0).text.split(':\n',1)
worksheet.write(i, 3, str_2)
i = i + 1
new_workbook.save('C:\\Users\\59564\\Desktop\\test.xls')#这是要输出保存的文件夹,注意保存的是xls文件。 谢谢分享。
先收藏,回头试试。 好牛逼的样子正在学自动化 办公 学习了谢谢分享 谢谢分享,最近在学 很受启发,{:1_921:}办公的没有网络的受欢迎啊
页:
[1]