python-自动化篇-办公-一键将word中的表格提取到excel文件中

文章目录

  • 代码

工作中,经常需要将Word文档中的表格粘贴到Excel文件中,以便汇总及分析。一个一个复制粘贴,非常不方便,还是Python自动化操作,省心省力。要求如下图所示,即将word中的所有表格,转存到excel文件的工作表里。
请添加图片描述

import os
from docx import Document
from openpyxl import Workbook#获取待处理的文件的路径
path='word文件'  #文件所在文件夹
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, start=1): #从1开始给表格编号ws = wb.create_sheet(f"Sheet{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中的一致,所以使用enmuerateWord中的表格进行编号,start=1表示从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#获取待处理的文件的路径
path='word文件'  #文件所在文件夹
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, start=1): #从1开始给表格编号ws = wb.create_sheet(f"Sheet{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文件

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457742.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python错误】Pytorch1.9 ImportError: cannot import name ‘zero_gradients‘

错误:Pytorch1.9 ImportError: cannot import name ‘zero_gradients’ 错误提示: ImportError: cannot import name ‘zero_gradients’ from ‘torch.autograd.gradcheck’ (/root/miniconda3/envs/d2l/lib/python3.9/site-packages/torch/autograd/g…

护眼灯的色温标准是什么?护眼灯参数标准介绍

选择合适的护眼台灯不仅能提升家居的品质,还能为我们的生活增添一份温馨与舒适。不过有些色温调节不当不仅不能达到很好的学习效率,还容易打瞌睡,甚至伤眼睛的情况也有可能出现,那么什么色温有什么标准呢? 一、合适的…

【计算机网络】【练习题及解答】【新加坡南洋理工大学】【Computer Control Network】【Exercise Solution】

说明: 个人资料,仅供学习使用,版权归校方所有。 一、题目描述 该问题接上期博文【练习题及解答】,描述网络通信中的链路效率(Link Efficiency),即Link Utilization的计算。(此处认…

Linux下库函数、静态库与动态库

库函数 什么是库 库是二进制文件, 是源代码文件的另一种表现形式, 是加了密的源代码; 是一些功能相近或者是相似的函数的集合体. 使用库有什么好处 提高代码的可重用性, 而且还可以提高程序的健壮性;可以减少开发者的代码开发量, 缩短开发周期. 库制作完成后, 如何给用户…

YUM | 包安装 | 管理

YUM 功能 软件包安装&#xff1a; 通过yum命令安装软件包。例如&#xff0c;安装一个名为 example-package 的软件包 yum install example-package更新包 检查更新&#xff1a; 检查可用更新&#xff1a; sudo yum check-update <package_name>软件包更新&#xff1a; y…

Win32 SDK Gui编程系列之--ListView自绘OwnerDraw

ListView自绘OwnerDraw 1.ListView自绘OwnerDraw 正在试错是否使用了列表视图,尽量制作出智能的表格编辑器。本页显示了业主抽签的表格数据(二维数组数据)的显示方法。 显示画面和整个程序如下所示。使用ListView_GetSubItemRect宏的话,就不需要getRect函数了。 当nCol的…

Linux基础开发工具使用【Yum | Vim | 编译器 | 调试器 | GDB | Makefile | Git】

本节目标&#xff1a; 学习yum工具&#xff0c;进行软件安装掌握vim编辑器使用&#xff0c;学会vim的简单配置掌握简单的Makefile编写&#xff0c;了解其运行思想编写自己的第一个Linux 程序&#xff1a;进度条掌握gcc/g编译器的使用&#xff0c;并了解其过程&#xff0c;原理掌…

蓝桥杯-求阶乘-python

问题描述 满足N!的末尾恰好有K个0的最小的N是多少&#xff1f; 如果这样的N不存在输出一1。 思路解析 末尾的0是由10产生的&#xff0c;而10是由质数2和5产生的 在求阶乘的过程中&#xff0c;只要是偶数就会有2&#xff0c;而5相对2更少&#xff0c;所以对于10的数量我们可以…

Python程序员面试题精选(1)

本文精心挑选了10道Python程序员面试题&#xff0c;覆盖了Python的多个核心领域&#xff0c;包括装饰器、lambda函数、列表推导式、生成器、全局解释器锁(GIL)、单例模式以及上下文管理器等。每道题都附有简洁的代码示例&#xff0c;帮助读者更好地理解和应用相关知识点。 题目…

redis:七、集群方案(主从复制、哨兵模式、分片集群)和面试模板

redis集群方案 在Redis中提供的集群方案总共有三种&#xff08;一般一个redis节点不超过10G内存&#xff09; 主从复制哨兵模式分片集群 主从复制&#xff08;主从数据同步&#xff09; replid和offset Replication Id&#xff1a;简称replid&#xff0c;是数据集的标记&a…

离谱!英国大学53%本科生用AI写论文!留学生该如何面对AI冲击?

随着AI的不断强化和更新换代&#xff0c;越来越多的学生开始使用人工智能辅助写论文&#xff0c;能省去不少信息搜集的时间。 英国大学从最开始的明令禁止&#xff0c;到如今也在逐步接受学生将它用做辅助工具&#xff1a; 然而&#xff0c;AI的使用其实还存在很多问题&#xf…

Files的常用方法都有哪些

Files的常用方法都有哪些 Java的java.nio.file包提供了Files工具类&#xff0c;用于对文件和目录进行常见的操作。以下是一些Files类的常用方法&#xff0c;以及简单的代码演示&#xff1a; 复制文件或目录&#xff1a; import java.io.IOException; import java.nio.file.*;pu…