Python批量合并365个工作表的2种方法

news2024/9/25 8:38:49

一、引言

小明刚进入到新公司,就被委以重任:将365个Excel文件中的英文表头修改为中文。传统方法是逐一打开每个文件,手动修改标题,然后保存,最后再合并。这种方法不仅耗时耗力,还容易出错。如果用Python就可以实现批量修改表头,并快速合并,就可以大大地提速,这样原本可能需要2天的工作量,可能只需要1分钟就完成了。那么用Python又是如何实现的呢?

二、实现代码

1. 使用pandas来合并

如果使用Python中的pandas的话,根据他的需求可以分为3步:

第一步:读取所有xlsx文件,这时我们使用的是os模块,利用os模块批量获取xlsx格式文件,由于有时还会有~.xlsx这种文件,干扰python读取文件,所以要排除一下。

第二步:利用pandas模块建立一个DataFrame,设定好表头columns,后面合并xlsx时就不用读取第一行表头,直接进行合并了。

第三步:利用for循环,拼接路径地址,逐个读取xlsx文件,修改表头后,再利用pandas中的concat来合并xlsx文件,合完成后输出保存。

通过以上三步,就可以将 365 个xlsx文件合并成一个,合并后的excel表头按要求的中文来。只需编写10多行代码,他就可以在 2秒内完成这项工作,而不是花费24小时。

import os
import pandas as pd
import time

t1 = time.time() #定义时间
# 定义文件夹路径
folder_path = "./files/"

# 获取文件夹中所有Excel文件的文件名
file_list = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') and not f.startswith("~")]

# 初始化一个空的DataFrame,用于存放合并后的数据
combined_df = pd.DataFrame(columns=['标题', '日期', '检查结果', '核检员'])

# 遍历所有Excel文件,并将它们合并到一个DataFrame中
for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    df = pd.read_excel(file_path)
    # 将列名改为所需的表头
    df.columns = ['标题', '日期', '检查结果', '核检员']
    # 将当前文件的内容追加到合并的DataFrame中
    combined_df = pd.concat([combined_df, df], ignore_index=True)

# 保存合并后的数据到一个新的Excel文件
output_file = "combined_quality_report.xlsx"
combined_df.to_excel(output_file, index=False)

print(f"所有文件已成功合并,并保存为 {output_file},\n耗时:{round(time.time()-t1, 1)}秒")

2.使用openpyxl来合并

由于pandas在打包时不太方便,因此为了跨平台操作,我们可以把它改为openpyxl,当然我们可以不用手工去改,只把上面这些代码放到ChatGPT中,给出指令就可以了。

ChatGPT辅助代码转写

在使用openpyxl时,我们修改代码的逻辑,直接从第二行来读取,简化读取步骤,而不用更新读取excel的表头了,这样可以保证其生成的速度还可以提高不少。步骤如下:

第一步,使用 openpyxl 创建一个新的工作簿。

第二步,读取每个文件的内容并跳过表头,只合并数据行。

第三步,最后将合并的数据保存到一个新的Excel文件中。

实现的代码如下:

import os
import time
from openpyxl import Workbook,load_workbook

# 定义时间
t1 = time.time()

# 定义文件夹路径
folder_path = "./files/"

# 获取文件夹中所有Excel文件的文件名
file_list = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') and not f.startswith("~")]

# 创建一个新的工作簿和活动工作表
combined_wb = Workbook()
combined_ws = combined_wb.active

# 添加表头
headers = ['标题', '日期', '检查结果', '核检员']
combined_ws.append(headers)

# 遍历所有Excel文件,并将它们合并到新的工作表中
for file_name in file_list:
    file_path = os.path.join(folder_path, file_name)
    wb = load_workbook(file_path)
    ws = wb.active
    
    # 跳过表头,从第二行开始读取数据
    for row in ws.iter_rows(min_row=2, values_only=True):
        combined_ws.append(row)  # 将每一行数据添加到合并的工作表中

# 保存合并后的数据到一个新的Excel文件
output_file = "combined_quality_report.xlsx"
combined_wb.save(output_file)

print(f"所有文件已成功合并,并保存为 {output_file},\n耗时:{round(time.time() - t1, 1)}秒")

三、学后总结

在数字化办公时代,掌握编程和自动化技能对提升工作效率至关重要。Python作为一种易学且功能强大的编程语言,在处理重复性工作时展现出巨大潜力。如果你也想摆脱繁重的重复劳动,不妨尝试学习Python编程,让你的办公效率直线上升。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[大语言模型-论文精读] MoRAG - 基于多部分融合的检索增强型人体动作生成

MoRAG--Multi-Fusion Retrieval Augmented Generation for Human Motion KS Shashank, S Maheshwari, RK Sarvadevabhatla - arXiv preprint arXiv:2409.12140, 2024 MoRAG - 基于多部分融合的检索增强型人体动作生成 1. 目录 MoRAG--Multi-Fusion Retrieval Augmented Generat…

Redis:缓存

为什么要理解Redis缓存问题 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。 当…

【MySql】在ubuntu下安装MySql数据库

目录 查看操作系统版本 添加 MySql APT源 访问下载页面并下载发布包 安装发布包 执行安装命令 从MySql APT源更新包信息 安装MySql 执行安装命令 查看MySql状态 开启自启动 登录MySql 查看操作系统版本 rootVM-24-2-ubuntu:~# lsb_release -a No LSB modules are ava…

软考高级:需求工程- 4+1 视图 AI 解读

这几个术语常见于软件架构的描述中,它们分别代表软件系统的不同角度或视角。为了更好理解它们,我们可以把软件系统想象成一个公司,每个视图就像从不同角度观察这个公司的运作方式。 生活化例子 想象你在经营一家餐馆: 逻辑视图…

SSM+Vue共享单车管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作…

C++网络编程之网络模型

概述 所谓网络模型,是指一组定义了网络通信功能和行为的规则和标准。这些模型通过将网络通信功能分解成不同的层次,使得网络通信更加模块化,也更易于理解和实施。每一层都有其特定的功能,通过层与层之间的交互,确保数据…

await命令的用法

正常情况下,await 命令后面是一个 Promise 对象,返回值是该 Promise 对象的结果。如果不是 Promise 对象,就会进行自动转换,使用 Promise.resolve(),就直接返回对应的值 await 命令后面的 Promise 对象如果变为 reject…

方法部分 学习

方法是程序中最小的执行单元 方法的定义调用 public static void 方法名(){ 方法体 } 写在main方法外面,在main函数里面直接调用带参数:public static void 方法名(int num1 , int num2&am…

计算机的错误计算(一百零三)

摘要 探讨 的计算精度问题。 从计算机的错误计算(九十九)知, 在IEEE 754-2019的列表中,并且定义域是实数域。但是,截止撰写本节内容时,本文作者仍未找到内置了该函数的语言或编译器。 例1. 已知 计算…

Vue3:shallowRef与shallowReactive

目录 一.shallowRef 和 shallowReactive 1.shallowRef 2.shallowReactive 二.ref 和 reactive 1. ref 2. reactive 三.各自使用场景 1.shallowRef 2.shallowReactive 3.ref 4.reactive 四.shallowRef 使用 五.shallowReactive使用 六.效果 一.shallowRef 和 shal…

Redis 分布式缓存服务(集群)

作者:程序那点事儿 日期:2023/11/17 13:05 准备6台虚拟机,ip分别是 192.168.10.101 192.168.10.102 192.168.10.103 192.168.10.104 192.168.10.105 192.168.10.106 创建6个节点 mkdir -p /usr/local/cluster/redis-node1 #对应192.168.10.…

【html网页制作】旅游风景主题网页制作含css动画及js特效(8页面附效果源码)

HTMLCSS旅游风景主题旅游网页制作 🍔涉及知识🥤写在前面🍧一、网页主题🌳二、网页效果菜单切换效果PageA、整体页Page1、首页Page2、旅行趣事页Page3、旅行美景页Page4、旅行指南页Page5、旅行视频页Page6、留言页Page7、西湖简介…

玩手机数据集 8201张玩手机的照片,有对应的xml和txt文件,可以用于yolo训练

玩手机数据集 8201张玩手机的照片,有对应的xml和txt文件,可以用于yolo训练 玩手机数据集(Phone Usage Detection Dataset) 数据集概述 该数据集专为检测人们使用手机的行为设计,旨在帮助研究人员和工程师开发高效的…

openai最新o1上线(2024年09月12日)

gpt-4o-2024-08-06输出文本价格 10美元/M o1-preview输出价格 60美元/M https://lmarena.ai/?leaderboard 数字9.11和9.8谁大些 人工智能学习网站 https://chat.xutongbao.top/

240924-Windows映射网络驱动器的方法

在Windows上加载网络盘(映射网络驱动器)可以通过以下步骤完成: 方法一:通过文件资源管理器 打开文件资源管理器: 可以按 Win E 打开,或者直接点击任务栏上的文件资源管理器图标。 点击“此电脑”&#x…

macOS与Ubuntu虚拟机使用SSH文件互传

1.ubuntu配置: 安装openssh服务: sudo apt-get install openssh-server -y 查看服务启动状态: systemctl status ssh 2.macOS使用scp连接ubuntu并发送文件 查看ubuntu IP : ifconfigmacOS终端连接ubuntu : sc

Linux入门学习:进程概念

文章目录 1. 什么是进程?1.1 基本概念1.2 task_struct 2. 组织进程3. 查看进程3.1 父进程与子进程3.2 fork创建子进程3.3 kill3.4 /proc 1. 什么是进程? 1.1 基本概念 在课本的概念中,进程程序的一个执行实例,正在执行的程序。其…

『功能项目』3D模型动态UI显示【76】

本章项目成果展示 我们打开上一篇75主角属性值显示的项目, 本章要做的事情是将3D模型动态显示在主角属性展示界面 首先创建RawImage 调整尺寸 创建文件夹:RenderTexture 创建 Render Texture 创建Camera 在场景中放置一个主角预制体删除所有组件 清空标…

LVGL第一篇-了解lvgl显示原理以及使用C++移植

一、引言 在当今嵌入式系统与图形界面开发的广阔领域中,轻量级图形库 LVGL(Light and Versatile Graphics Library)恰似一颗璀璨耀眼的明星,正日益受到开发者们的热烈推崇与追逐。它以小巧精致之姿、高效卓越之能以及丰富多元之功…

计算机毕业设计之:宠物互助平台的微信小程序系统(源码+文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…