python实战一:合并多个Excel中数据

看不懂可以跟着视频学一下,关于基础课程项目也可以私聊我!

视频+源码:
链接:https://pan.quark.cn/s/2055653f735b

之前我们已经学习了如何读取和写入Execl数据,今天我们来用一个实例来进行表格的合并。如下是
2021年4个季度的销售数据明细。我们把它放在了D盘2021年销售明细的文件夹下。

每一个季度销售数据里又包含三个月的具体明细,每个月的销售记录都有1000多条,现在需要批量合
并4个工作簿,共计12张表,使用Ctrl+C、Ctrl+V功能已经不能很好的解决这里的问题,这里我们就可以用
代码解决。

上代码:

import time
from openpyxl import Workbook, load_workbook
import osdef 合并表格(file_dir, save_dir):files_name = os.listdir(file_dir)# 创建新表格new_wb = Workbook()new_ws = new_wb.activeheader = ['销售日期', '员工工号', '销售员', '货号', '销售单号', '销量', '销售额']new_ws.append(header)# 向新的表格写入数据for file_name in files_name:wb = load_workbook(file_dir + "\\" + file_name)for sheet in wb.sheetnames:ws = wb[sheet]# 设置values_only=True 则可以直接得到单元格中的值for row in ws.iter_rows(min_row=2, values_only=True):new_ws.append(row)print('全年销售数据为 %s 行' % (new_ws.max_row - 1)) # 去除第一行标题剩下的则为全年销
售数据总行数# 数据保存if not os.path.exists(save_dir):os.makedirs(save_dir)new_wb.save(save_dir + "\\" + "全年数据.xlsx")if __name__ == '__main__':开始时间 = time.time()合并表格(r"D:\2021年销售明细", r"D:\2021年销售分析")print('合并完成耗时:', time.time() - 开始时间, "秒")

 运行结果:

全年销售数据为 13065 行
合并完成耗时: 6.565231084823608 秒

代码很简单,首先使用os库,循环遍历D:\2021年销售明细 目录下所有文件,然后再使用openpyxl库循环遍历单元格中的数据,并且导入,合并结果保存到【全年数据,xsx】文档下。从结果可以看出总共合并了13065行数据,只花了不到7秒钟。
我们打开看下【全年数据.xlsx】可以看到行数计数是跟代码统计的行数相吻合的。

自我演示如下:

import time  #导入 time 模块,以便使用时间相关的功能,比如测量程序运行时间。
from openpyxl import Workbook, load_workbook  #从 openpyxl 库导入 Workbook 和 load_workbook 类。这两个类用于创建和加载 Excel 工作簿。
import os  #导入 os 模块,用于处理文件和目录路径等操作。def 合并表格(file_dir, save_dir):  #定义一个名为 合并表格 的函数,它接受两个参数:file_dir(包含要合并的 Excel 文件的目录路径)和 save_dir(保存合并结果的目录路径)。files_name = os.listdir(file_dir)  #使用 os.listdir 函数列出 file_dir 目录下的所有文件和目录的名称,并将这些名称存储在 files_name 列表中。print(files_name)  #打印 files_name 列表的内容,这样你可以看到 file_dir 目录中的所有文件和目录名称。new_wb = Workbook()     #这里新建一个工作铺,相当新建一个文件夹new_ws = new_wb.active  #新建一个Excel表格header = ['销售日期', '员工工号', '销售员', '货号', '销售单号', '销量', '销售额']  #表格的头部new_ws.append(header)   #将表格的头部加入到新建的表格中去for file_name in files_name:   #利用for循环遍历将几个旧表格内容添加到新表格中if file_name.endswith('.xlsx'):  #检查文件名是否以 .xlsx 结尾,以确定它是否是一个 Excel 文件。file_path = os.path.join(file_dir, file_name)#构建 Excel 文件的完整路径,file_dir 是文件夹路径,file_name 是文件名。wb = load_workbook(file_path)#使用 openpyxl 库的 load_workbook 函数加载 Excel 文件,以便在代码中进一步处理这个工作簿。for sheet in wb.sheetnames:  #遍历工作簿中的所有工作表名称。ws = wb[sheet]  #获取当前工作表对象 ws。for row in ws.iter_rows(min_row=2, values_only=True):  #遍历当前工作表中的所有数据行,从第二行开始(跳过表头),并且只获取单元格的值,不包括单元格格式。new_ws.append(row)  #将遍历到的数据行 row 添加到新工作表 new_ws 中if not os.path.exists(save_dir):  #检查保存目录 save_dir 是否存在。如果不存在,则创建这个目录。os.makedirs(save_dir)  #创建最终保存文件的完整路径,save_dir 是保存目录,"全年数据.xlsx" 是文件名。save_path = os.path.join(save_dir, "全年数据.xlsx")  #创建最终保存文件的完整路径,save_dir 是保存目录,"全年数据.xlsx" 是文件名。new_wb.save(save_path)  #将新创建的工作簿 new_wb 保存到上述路径。if __name__ == '__main__':  #确保只有在脚本被直接运行时,才会执行以下代码块。开始时间 = time.time()  #记录脚本开始运行的时间。合并表格(r"D:\2021年销售明细", r"D:\2021年销售汇总")  #调用 合并表格 函数,传入输入和输出目录。print('合并完成耗时:', time.time() - 开始时间, "秒")  #打印合并过程的耗时。

以上是我演示有什么不懂的地方可以私信我!谢谢阅读!可以技术交流!

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

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

相关文章

YOLOv9改进策略【模型轻量化】| ShufflenetV2,通过通道划分构建高效网络

一、本文介绍 本文记录的是基于ShufflenetV2的YOLOv9目标检测轻量化改进方法研究。FLOPs是评价模型复杂独的重要指标,但其无法考虑到模型的内存访问成本和并行度,因此本文在YOLOv9的基础上引入ShufflenetV2,使其在在保持准确性的同时提高模型…

多线程篇(基本认识 - 锁优化)(持续更新迭代)

目录 一、前言 二、阿里开发手册 三、synchronized 锁优化的背景 四、Synchronized的性能变化 1. Java5之前:用户态和内核态之间的切换 2. java6开始:优化Synchronized 五、锁升级 1. 无锁 2. 偏向锁 2.1. 前言 2.2. 什么是偏向锁 2.3. 偏向…

ChatTTS 长音频合成和本地部署2种方式,让你的“儿童绘本”发声的实战教程(文末有福利)

接上文(GLM-4-Flash 大模型 API 免费了,手把手构建“儿童绘本”应用实战(附源码)),老牛同学通过 GLM-4-Flash 文生文和 CogView-3 文生图大模型,和大家一起编写了一个图文并茂的儿童绘本应用&am…

从默默无名到销量激增,极越CEO哭了

文 | 智能相对论 作者 | 周晚 8月28日,极越汽车CEO夏一平在接受媒体采访的时候泪洒当场! 倒不是因为极越汽车销量寥寥,而是因为突然销量激增,他带领的极越团队走出低谷,当他们回过头去看今年上半年的巨大压力&#…

欧拉 函数

互质: 互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者特殊情况。 (1和-1与所有整数互质,而且它们是唯一与0互质的整数) 互质的判断方法&…

1500+ HuggingFace API token暴露,使数百万 Meta-Llama、Bloom 等大模型用户面临风险

HugginingFace 和 GitHub 是AI开发人员的重要平台,因此我们决定对这些平台做更为深入的研究。在这项研究中,我们发现了数以千计的 API 令牌,这些令牌暴露给恶意行为者,使数百万最终用户可能受到攻击。 本文的主要内容包括&#x…

MySQL高阶练习题1- 寻找面试候选人

目录 题目 准备数据 分析数据 实现代码 总结 题目 返回 所有面试候选人 的姓名 name 和邮件 mail 。当用户满足以下两个要求中的 任意一条 ,其成为 面试候选人 : 该用户在 连续三场及更多 比赛中赢得 任意 奖牌。该用户在 三场及更多不同的 比赛中赢得 金牌&…

python实战三-提取Word数据到Excel

视频源码: 链接:https://pan.quark.cn/s/83db5bb15383 一个文件夹下有大量会议通知文件,为word文件,文件格式都是一致的,现在要将文件中的一些字段提取出来汇总到Excel文件中。 会议通知文件格式如下: 要提…

C++(1)基础语法

C(1)之基础语法 Author: Once Day Date: 2024年8月29日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 参考文…

通用后台管理系统实战演示(Vue3 + element-plus)汇总篇一

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【Windows学习笔记】1:OneCore和Windows API

1 OneCore 主流Windows跑在PC上,Xbox跑的是从Windows 2000分支出来的版本,Windows Phone跑的是基于Windows CE(实时操作系统)的版本。 为了维护和扩展这些code方便,微软将kernels和base platform集成在一起叫OneCore…

宿舍|基于SprinBoot+vue的宿舍管理系统(源码+数据库+文档)

宿舍管理系统 基于SprinBootvue的私人诊所管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 学生功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&…

【计算机组成原理】六、总线:3.操作和定时

5.操作和定时 文章目录 5.操作和定时5.1总线传输的四个阶段5.2总线定时5.2.1同步通信5.2.2异步通信5.2.3半同步通信5.2.4分离式通信 2.3按时序控制方式 同步总线异步总线 5.1总线传输的四个阶段 总线周期: 申请分配阶段:由需要使用总线的主模块&#…

【C++11及其特性】左值和右值

左值和右值目录 一.左值和右值的报错1.简单定义2.函数返回值作左值3.表达式作左值 二.存储的层次结构1.CPU2.内存3.磁盘4.三者联系5.寄存器 三.左值和右值的概念1.左值2.右值3.转换 一.左值和右值的报错 1.简单定义 赋值号’左边的为左值,右边的为右值. 2.函数返回值作左值 …

力扣刷题(3)

整数反转 整数反转-力扣 思路&#xff1a; 利用%和/不断循环取待反转整数的最后一位&#xff0c;注意判断是否超出范围。 int reverse(int x){int y0;while(x){if(y > INT_MAX/10 || y < INT_MIN/10)return 0;int tmpx%10;yy*10tmp;x/10;}return y; }字符串转换整数 …

自动化代码报错:ElementClickInterceptedException 解决方案

在自动化测试中&#xff0c;如果有多个弹窗出现&#xff0c;代码执行可能会遇到ElementClickInterceptedException的错误&#xff0c;表明元素点击被拦截&#xff1a; 一般由于以下原因&#xff1a; 一、页面加载未完成 在页面尚未完全加载完成时尝试点击某个元素&#xff0c…

ENVI SARscape||笔记

介绍就不介绍了&#xff0c;直入主题&#xff01; 第一章 ENVI和SARscape 下载与安装&#xff1a; ENVI 5.6 软件安装包下载及安装激活教程&#xff01; (qq.com)https://mp.weixin.qq.com/s/kH0g5g9AALgDNPssfdZ8wQ 启动 ENVI 的启动模式有两种&#xff1a;ENVI和ENVIIDL&…

前端性能优化:提升网站加载速度的五个关键技巧

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端性能优化&#xff1a;提升网站加载速度的五个关键技巧1. 引言2. 前端性能优化的五个关键技巧2.1 减少HTTP请求技巧说明实现示例 2.2 启用浏览器缓存技巧说明实现示例 2.3 使用内容分发网络&#xff08;CDN&#xff09;技巧说明…

Adobe DC 2022提示无法识别的错误 - 解决方案

Adobe DC 2022提示无法识别的错误 - 解决方案 问题解决方案更改安装&#xff08;推荐&#xff09;重新安装&#xff08;推荐&#xff09;降级安装&#xff08;不推荐&#xff09; 问题 使用Adobe DC 2022合并图片创建PDF时&#xff0c;会提示无法识别的错误&#xff0c;这是因…

Mac 安装Hadoop教程

1. 引言 本教程旨在介绍在Mac 电脑上安装Hadoop&#xff0c;便于编程开发人员对大数据技术的熟悉和掌握。 2.前提条件 2.1 安装JDK 想要在你的Mac电脑上安装Hadoop&#xff0c;你必须首先安装JDK。具体安装步骤这里就不详细描述了。你可参考Mac 下载JDK8。 2.2 配置ssh环境…