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文件

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

红队打靶练习:PHOTOGRAPHER: 1

目录 信息收集 1、arp 2、nmap 3、nikto 目录扫描 1、gobuster 2、dirsearch WEB 信息收集 enum4linux smbclient 8000端口 CMS利用 信息收集 文件上传漏洞利用 提权 信息收集 get user.txt get flag 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# a…

【开源】JAVA+Vue.js实现开放实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

【快速上手QT】02-学会查看QT自带的手册QT助手

QT助手 为什么大家都说QT简单,第一点就是确实简单(bushi)。 我个人觉得最关键的点就是人家QT官方就给你准备好了文档,甚至还有专门的IDE——QtCreator,在QTCreator里面还有很多示例代码,只要你会C的语法以…

小白水平理解面试经典题目LeetCode 71. Simplify Path【Stack类】

71. 简化路径 小白渣翻译 给定一个字符串 path ,它是 Unix 风格文件系统中文件或目录的绝对路径(以斜杠 ‘/’ 开头),将其转换为简化的规范路径。 在 Unix 风格的文件系统中,句点 ‘.’ 指的是当前目录,…

WordPress如何自建txt文本经典语录并随机显示一句话经典语录?

前面跟大家分享的『WordPress集成一言(Hitokoto)API经典语句功能』一文中就提供有自创API,其中懿古今顶部左上角显示的经典语录用的就是自建一个txt文本文件,然后再在前端网页指定位置随机显示语录。具体操作方法如下:…

Oracle篇—logminer日志挖掘恢复误操作数据

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

微软.NET6开发的C#特性——类、结构体和联合体

我是荔园微风,作为一名在IT界整整25年的老兵,看到不少初学者在学习编程语言的过程中如此的痛苦,我决定做点什么,下面我就重点讲讲微软.NET6开发人员需要知道的C#特性。 C#经历了多年发展, 进行了多次重大创新&#xf…

C# 委托(delegate)本质理解

目录 代码如下,很简单 运行的结果 反编译程序查看 关注两点: 什么是委托 委托的三个步骤 委托的意义 代码如下,很简单 namespace Delegate { class Program { delegate void SayHi(); void SayHi_1() …

FL Studio水果软件21的版本更新具体有哪些内容?

FL Studio 21相比之前的版本,包含多个新的更新和改进,具体内容如下: 用户界面:FL Studio 21采用了全新的FLAT UI设计风格,使得界面更加简洁美观。同时,用户现在可以根据自己的喜好更换界面风格。另外&…

CSS Transition:为网页元素增添优雅过渡效果

随着互联网的发展,网页的视觉效果和用户体验变得尤为重要。CSS Transition作为一种能够让网页元素在状态改变时呈现平滑过渡效果的工具,受到了广大前端开发者的青睐。本文将详细介绍CSS Transition的基本概念、使用方法以及常见应用,帮助读者…

问题:0xc8前面加(byte) #人工智能#学习方法的原因是因为0xc8大于??????????? 。 #微信#其他#微信

问题:0xc8前面加(byte)的原因是因为0xc8大于??????????? 。 参考答案如图所示

Arm发布新的人工智能Cortex-M处理器

Arm发布了一款新的Cortex-M处理器,旨在为资源受限的物联网(IoT)设备提供先进的人工智能功能。这款新的Cortex-M52声称是最小的、面积和成本效率最高的处理器,采用了Arm Helium技术,使开发者能够在单一工具链上使用简化…

编程实例分享,手表养护维修软件钟表维修开单管理系统教程

编程实例分享,手表养护维修软件钟表维修开单管理系统教程 一、前言 以下教程以 佳易王钟表维护维修管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 左侧为导航栏, 1、系统设置:可以设置打…

【Git版本控制 04】标签管理

目录 一、创建标签 二、查看标签 三、推送标签 四、删除标签 一、创建标签 标签tag,是对某次 commit 的⼀个标识,相当于起了⼀个别名。 相较于难以记住的 commit id , tag 很好的解决这个问题,因为 tag ⼀定要给⼀个让⼈容易…

如果把vue组件动态添加到body上?

tools.js: import Vue from vue/*** param Component 组件实例的选项对象* param props 组件实例中的prop*/ export function create(Component, props) {const comp new (Vue.extend(Component))({ propsData: props }).$mount()document.body.appendChild(comp.$el)comp.re…

flutter监听app进入前后台状态的实现

在开发app的过程中,我们经常需要根据app的前后台的状态,做一些事情,那么我们在flutter中是如何实现这一监听的? flutter给我们提供了WidgetsBindingObserver来进行一些状态的判断,但是判断前后台的状态只是该API种其中…

c++多态(3) -- 虚析构函数

代码: enum class _ANIMALS_TYPE {CAT,DOG,ANIMAL_COUNT };class Animal { public:Animal(_ANIMALS_TYPE type, int age,const char* name);~Animal();virtual void eat()const 0; private:_ANIMALS_TYPE type; // 动物类型int age; // 动物年龄char* na…

【蓝桥杯冲冲冲】Invasion of the Milkweed G

【蓝桥杯冲冲冲】Invasion of the Milkweed G 蓝桥杯备赛 | 洛谷做题打卡day30 文章目录 蓝桥杯备赛 | 洛谷做题打卡day30[USACO09OCT] Invasion of the Milkweed G题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题解代码我的一些话 [USACO09OCT] Invasion of the Mi…

AD域国产替代方案,助力某金融企业麒麟信创电脑实现“真替真用”

近期收到不少企业客户反馈采购的信创PC电脑用不起来,影响信创改造的进度。例如,某金融企业积极响应国产化信创替代战略,购置了一批麒麟操作系统电脑。分发使用中发现了如下问题: • 当前麒麟操作系统电脑无法做到统一身份认证&…

学生管理系统(javaSE第一阶段项目)

JavaSE第一阶段项目_学生管理系统 1.项目介绍 此项目是JavaSE第一阶段的项目,主要完成学生对象在数组中的增删改查,大家可以在此项目中发挥自己的想象力做完善,添加其他功能等操作,但是重点仍然是咱们前9个模块的知识点2.项目展示 2.1.添加功能 2.2.查看功能 2.3.修改功能 2…