免费的企业网站,献县建设局网站,凡客有家,电商运营有几大平台文章目录 代码 工作中#xff0c;经常需要将Word文档中的表格粘贴到Excel文件中#xff0c;以便汇总及分析。一个一个复制粘贴#xff0c;非常不方便#xff0c;还是Python自动化操作#xff0c;省心省力。要求如下图所示#xff0c;即将word中的所有表格#xff0c;转存… 文章目录 代码 工作中经常需要将Word文档中的表格粘贴到Excel文件中以便汇总及分析。一个一个复制粘贴非常不方便还是Python自动化操作省心省力。要求如下图所示即将word中的所有表格转存到excel文件的工作表里。
import os
from docx import Document
from openpyxl import Workbook#获取待处理的文件的路径
pathword文件 #文件所在文件夹
files [path\\i for i in os.listdir(path)] #获取文件夹下的文件名,并拼接完整路径for file in files:doc Document(file)wb Workbook()wb.remove(wb.worksheets[0])#删除工作簿自带的工作表for index, table in enumerate(doc.tables, start1): #从1开始给表格编号ws wb.create_sheet(fSheet{index})#创建新工作表以Sheet word中表格的编号命名for i in range(len(table.rows)): #遍历word中表格的所有行row_data [] #储存表格中每行的数据for j in range(len(table.columns)): #遍历word中表格的所有列row_data.append(table.cell(i,j).text)ws.append(row_data) #每取一行就写入数据到Excel表的行中wb.save(excel文件\\{}.xlsx.format(file.split(\\)[1].split(.)[0])) #保存excel文件
以上先导入相关模块。os用于获取待处理word文件的路径docx用于读取word文件openpyxl用于操作excel文件。将所有word文件的路径存入列表files中。然后逐个通过Document打开并使用Workbook()创建Excel工作簿以接收来自于word文件中的数据。因为创建工作簿后Excel会自动新建一个名为Sheet的空白表格但我们想用自己命名的表格所以使用remove()将自动新建的表删掉了。 然后遍历word文件中的所有表格并读取其中的数据。由于我们想让Excel工作簿中的表的序号与Word中的一致所以使用enmuerate给Word中的表格进行编号start1表示从1开始不然会默认从0开始。 随后使用wb.create_sheet新建一个工作表其表名就用字符串Sheet加上上面的编号。其中f{}是格式化字符串方法从Python 3.6开始加入标准库是一种更灵活好用的方法。如下有四种方式处理字符串结果完全一样不过第一种最好用墙裂推荐。
name Trump
age 70
f你好, {name} 你的年龄是{age}岁.‘你好, Trump 你的年龄是70岁.’
你好, {} 你的年龄是{}岁..format(name,age)‘你好, Trump 你的年龄是70岁.’
你好, %s 你的年龄是%s岁. % (name, age)‘你好, Trump 你的年龄是70岁.’
你好, name 你的年龄是 str(age) 岁.‘你好, Trump 你的年龄是70岁.’
然后遍历word中表格的所有行和列将每行的数据存入列表row_data然后通过append方法马上增加到Excel表中最后一个数据下面。append方法可以将一个列表中的所有元素写入到excel表的一行一个元素占一个单元格如下图够智能的吧
处理完一个word文件就保存一下数据。为了使保存的excel文件名与word文件名一致使用了file.split(\\)[1].split(.)[0])。其中file的内容如下。file.split(\\)[1]就得到了’采购报告.docx’采购报告.docx.split(.)[0]就得到了“采购报告”。
file‘你好, Trump 你的年龄是70岁.’ ‘你好, Trump 你的年龄是70岁.’ ‘你好, Trump 你的年龄是70岁.’ ‘你好, Trump 你的年龄是70岁.’ ‘word文件\采购报告.docx’
file.split(\\)[1]‘采购报告.docx’
采购报告.docx.split(.)[0]‘采购报告’
结果图如下。word文件中有多少个表格就会在excel文件中生成多少个sheet。而且如果在word文件中有合并单元格那到excel文件中这些单元格会拆分并填充相同的内容更利于数据分析。当然结果excel文件中的格式就不是那么好看了需要手动调整一下。
代码
import os
from docx import Document
from openpyxl import Workbook#获取待处理的文件的路径
pathword文件 #文件所在文件夹
files [path\\i for i in os.listdir(path)] #获取文件夹下的文件名,并拼接完整路径for file in files:doc Document(file)wb Workbook()wb.remove(wb.worksheets[0])#删除工作簿自带的工作表for index, table in enumerate(doc.tables, start1): #从1开始给表格编号ws wb.create_sheet(fSheet{index})#创建新工作表以Sheet word中表格的编号命名for i in range(len(table.rows)): #遍历word中表格的所有行row_data [] #储存表格中每行的数据for j in range(len(table.columns)): #遍历word中表格的所有列row_data.append(table.cell(i,j).text)ws.append(row_data) #每取一行就写入数据到Excel表的行中wb.save(excel文件\\{}.xlsx.format(file.split(\\)[1].split(.)[0])) #保存excel文件