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

news2024/11/15 9:18:28

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

视频+源码:
链接: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 os

def 合并表格(file_dir, save_dir):
    files_name = os.listdir(file_dir)
    # 创建新表格
    new_wb = Workbook()
    new_ws = new_wb.active
    header = ['销售日期', '员工工号', '销售员', '货号', '销售单号', '销量', '销售额']
    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.coloradmin.cn/o/2082659.html

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

相关文章

离散数学中的逻辑基础(1)

目录 引言 1. 命题及其逻辑运算 2. 逻辑等价与范式 3. 逻辑推理规则 4. 逻辑问题练习 5. 总结 引言 逻辑是离散数学的核心概念之一,它用于精确描述数学命题并分析其关系。逻辑不仅是数学证明的基础,也是计算机科学中算法设计和编程的基石。本篇文…

【STM32】STM介绍

一、嵌入式与STM32 1.嵌入式 除了桌面PC之外,所有的控制类设备,都称之嵌入式。 1 ARM概述 1.1 历史 1978年,物理学家赫尔曼豪泽(Hermann Hauser)和工程师Chris Curry,在英国剑桥创办了CPU公司&#xff…

识别不到开发板串口问题(故事版)

最近电脑重新刷机了,很多东西都没了,很伤心。但也是锻炼自己基本功的能力。 我在用vscode开发ESP32的时候,发现一直识别不到串口,很纳闷,以为笔记本端口坏了? 转念一想觉得是因为没有加驱动 当时下面有一…

大模型学习应用 3: AutoDL 平台 transformers 环境搭建及模型部署使用(持续更新中)

之前我们学习了在和鲸的预配置好的平台上进行学习,在工作中并不现实,本期我们的目标是将已有模型部署到云端进行运行 配置环境:RTX 4090D(24GB) python 3.12(ubuntu22.04) 参考文章:AutoDL平台transformers环境搭建 目录 注册及选择算力新建…

E6000物联网主机:打造智慧楼宇的未来

智慧楼宇,作为现代建筑领域的璀璨明星,正以其独特的魅力和强大的功能改变着我们的生活和工作方式。它并非简单的建筑与技术的叠加,而是通过先进的信息技术和智能化系统的深度融合,实现对建筑内各项设施和服务的高效管理与优化。 智…

Mac怎么安装谷歌浏览器

谷歌浏览器凭借其强大的功能,成为广大用户的首选浏览器。其中Mac用户在进行下载和安装时,可能会出现一些困难。为了帮助大家顺利的在Mac系统中成功安装,下面就给大家详细分享Mac安装谷歌浏览器指南,希望对你有所帮助。 Mac安装谷歌…

xss-labs通关攻略 16-20关

第16关 ?keyword<img%0asrc"1.jpg"%0aοnerrοralert(1)> 第17关 查看源代码 输入 ?arg01a&arg02 οnmοuseοveralert("aini") 第18关 直接输入 ?arg01a&arg02 οnmοuseοveralert("aini") 第19关 需要下载一个flash 输…

国内纵向科研项目梳理

文章目录 1. 2023 年以后2. 2023 年以前2.1 国家重点研发计划2.1.1 重点专项 2.2 国家科技重大专项 3. 附&#xff1a;国家级和省部级科研项目列表 1. 2023 年以后 2023 年&#xff0c;根据新的国务院机构改革方案&#xff0c;科技部现有的多项管理职责和多个下属机构都将被分…

6款自动生成文章的软件,生成文章好用、操作简单

作为一名专业创作者&#xff0c;我深知内容生产的压力和挑战。在追求效率的同时&#xff0c;保持文章的质量和原创性是至关重要的。最近&#xff0c;我亲测了6款自动生成文章的软件&#xff0c;发现它们不仅操作简便&#xff0c;而且生成的文章质量令人满意。以下是我对这6款软…

ctfhub-web-SSRF(FastCGI协议-DNS重绑定 Bypass)

less-6 FastCGI协议 步骤一&#xff1a;开启环境&#xff0c;查看提示 步骤二&#xff1a;对一句话木马进行base64编码&#xff1a;<?php eval($_POST[cmd]);?> echo "PD9waHAgQGV2YWwoJF9QT1NUW2NtZF0pOz8" | base64 -d > 1.php 步骤三&#xff1a;利…

#C++ 笔记一

重点&#xff1a;面试考试大概率会涉及&#xff0c;需要不借助任何资料掌握。 掌握&#xff1a;面试考试可能涉及&#xff0c;需要不借助任何资料掌握 熟悉&#xff1a;面试考试可能涉及&#xff0c;可以稍微参考资料掌握 了解&#xff1a;面试考试小概率涉及&#xff0c;能吹吹…

获取文件属性/库Lib

获取文件属性 stat 函数 man 2 stat #include <sys/types.h> #include <sys/stat.h> #include <unistd.h>int stat(const char *path, struct stat *buf); 功能&#xff1a;获取文件属性 参数&#xff1a; path&#xff1a;文件路径名buf&#xff1a;保存文…

最新黑名单查询录入系统_全开源源码

最新黑名单查询录入系统_全开源源码 前端html 后端layui 操作部分都采用API接口的方式实线 集结了layui表格的多数据操作&#xff0c;添加&#xff0c;批量删除&#xff0c;分页&#xff0c;单项删除 后台数据修改采用绑定参数的形式来进行修改可以很好的预防数据库注入…

【Python入门】第3节 循环语句

&#x1f4d6;第3节 循环语句 ✅while循环的基础语法✅while循环的嵌套✅while循环的嵌套案例✅for循环的基础语法&#x1f9ca;基础语法&#x1f9ca;range语句&#x1f9ca;变量作用域 ✅for循环的嵌套应用✅循环中断 : break和continue ✅while循环的基础语法 只要条件满足…

Thread的属性和方法及如何中断一个线程

文章目录 一. Thread提供的属性和方法1. Thread常见的构造方法2. 属性及获取方法 二. 中断(终止)一个线程1) 自己来实现控制线程结束的例子2) 使用Thread提供的interrupt和isInterrupted方法来实现控制线程结束 一. Thread提供的属性和方法 1. Thread常见的构造方法 ③ 在创建…

戏曲多多 v1.0.4 — 专为老年人打造的戏曲娱乐软件(含经典评书与广场舞)

戏曲多多 TV 是一款专为老年人量身打造的视频娱乐软件&#xff0c;安装在智能电视、智能机顶盒、投影仪等安卓系统设备上后&#xff0c;老年人可以在电视上轻松观看各种戏曲视频。软件涵盖豫剧、京剧、秦腔、越剧、昆曲、淮剧、川剧、黄梅戏等多种戏曲类型。除了戏曲&#xff0…

Java设计模式之原型模式详细讲解和案例示范

引言 在软件设计中&#xff0c;设计模式为我们提供了可复用的解决方案&#xff0c;以应对常见的设计问题。原型模式&#xff08;Prototype Pattern&#xff09;是创建型设计模式的一种&#xff0c;它允许通过复制现有对象来创建新对象&#xff0c;而不需要了解创建过程的细节。…

【软件】常用软件教程一:码云(Gitee)使用方法

文章目录 一、简介二、创建远程仓库三、配置SSH公钥四、同步 Gitee 仓库内容到本地五、本地新建文件并同步至 Gitee六、删除远程仓库中的指定文件七、常见代码 一、简介 Git 是一种分布式版本控制系统&#xff0c;用于跟踪和管理代码的变更。它是由 Linus Torvalds 创建的&…

ctfhub-web-SSRF(内网访问-上传文件)

www.ctfhub.com less-1 内网访问 步骤一&#xff1a;开启环境&#xff0c;查看提示 步骤二&#xff1a;输入urlhttp://127.0.0.1/flag.php 得出结果 显示提交成功 less-2 伪协议读取文件 步骤一&#xff1a;开启环境&#xff0c;查看提示 步骤二&#xff1a;输入urlfile://…

英伟达财报引爆AI投资狂潮?华尔街众说纷纭

英伟达&#xff0c;这个名字最近可是火爆了整个科技圈。作为全球最大的GPU供应商&#xff0c;英伟达的每一次动作都牵动着无数投资者的神经。尤其是即将到来的财报发布&#xff0c;更是让市场充满了期待和忐忑。 华尔街聚焦&#xff1a;AI巨头能否持续高增长&#xff1f; 整个…