Python 自动化之修理excel文件(二)

批量合成excel文档Pro版


文章目录

  • 批量合成excel文档Pro版
  • 前言
  • 一、做成什么样子
  • 二、基本架构
  • 三、库输入模块
  • 四、用户输入模块
  • 五、数据处理模块
    • 1.获取当前目录的文件信息
    • 2.创建Workbook实例对象
    • 3.遍历entries列表
    • 4.获取Excel文件的工作表信息
    • 5.命名和写入数据
  • 六、数据输出模块
    • 1.删除空表sheet
    • 2.保存合并后的Excel文件
  • 总结


前言

上一篇简单介绍了一下excel文档的工作表拆分。那这篇给大家介绍一个批量深层次合并excel文档的教程。

各位快往下看呐!看不了吃亏看不了上当。货真价实童叟无欺呀!

在这里插入图片描述


一、做成什么样子

  • 指定合成某个目录的所有excel文档。
  • 指定合成这批excel文档的第几个sheet工作表。
  • 合成的新文档可以重命名新名字和指定目录。
  • 合成的新文档的里面的工作表顺序和目录下excel文档顺序一样。
  • 合成的新文档的里面的每个工作表命名格式《原文档名称-指定sheet名称》。

二、基本架构

主要分为四部分:

  • 库输入模块: 用到的一些库
  • 用户输入模块:需要用户输入的信息。
  • 数据处理模块:for—if嵌套循环结构。
  • 数据输出模块:输出保存文档。

三、库输入模块

代码如下:

from openpyxl import load_workbook
from openpyxl import Workbook
import os

load_workbook:用来读取文档信息。
Workbook:用来保存文档信息。
os:用来生成文档的新路径。


四、用户输入模块

代码如下:

print('请输入需要合并的文件的路径(例子:E:\BaiduNetdiskDownload):', end='')
excel_path = input()print('需要合并文档中的第几个工作表:', end='')
which_sheet = int(input())print('合并新文档的名称(例子:新建文本文档.xlsx):', end='')
creat_xlsx_name = input()print('合并文档保存到哪个目录(例子:E:\BaiduNetdiskDownload):', end='')
new_excel_path = input()

使用者需要按照提示输入以上四个信息。


五、数据处理模块

1.获取当前目录的文件信息

# 获取目录下的所有条目
entries = os.listdir(excel_path)
print(entries)

entries会以目录中文档名称按顺序生成一个列表List。

2.创建Workbook实例对象

# 创建一个Workbook实例对象,用于保存
write_excel = Workbook()

需要把这个保存数据的实例对象写在for–if结构上面,这样下面的每一次遍历的数据才能不断地加入到这个实例中。

3.遍历entries列表

# 遍历当前所有条目
for entry in entries:# 判断是否是excel文档if entry.endswith('.xlsx'):

先遍历整个entries列表,把excel文档筛选出来进行下一步操作。
难免有些同学的目录中会有一些学习资料哈哈哈哈哈哈。

4.获取Excel文件的工作表信息

        # 使用os.path.join()构造完整文件路径full_entry_path = os.path.join(excel_path, entry)# 读取Excel文件read_excel = load_workbook(full_entry_path)# 获取指定工作表select_sheet = read_excel.worksheets[which_sheet-1]# 读取工作表数据datas = list(select_sheet.values)  # 将生成器转换为列表

第一步:找到Excel文件的路径。
第二步:读取Excel文件。
第三步:定位指定工作表。
第四步:获取指定工作表sheet信息。

5.命名和写入数据

        # 创建并命名工作表new_ws = write_excel.create_sheet(title=f"{entry.split('.')[0]}-{select_sheet.title}")# 给工作表写入数据for row in datas:new_ws.append(row)

先给工作表起个名字,然后把对应的数据写进去,一气呵成。


六、数据输出模块

1.删除空表sheet

# 删除默认创建的空工作表
del write_excel['Sheet']

这个大家应该很熟悉哈,把没有用的删除了。就像大家经常说的:上岸第一步,先斩意中人,呜呜呜呜呜~ ~ ~

2.保存合并后的Excel文件

# 保存合并后的Excel文件
write_excel.save(full_path)

最后一步,保存。大功告成oh!yeah!

总结

希望本博客能位广大打工人增加摸鱼的时间。就像某位名人所说的:加班,加班是不可能得,这辈子都不可能加班。只有摸鱼才能简单维持的了生活这样子。

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

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

相关文章

ssm(springboot儿童众筹救助系统 儿童捐赠系统Java系统

ssm(springboot儿童众筹救助系统 儿童捐赠系统Java系统 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数…

[笔记] 使用 qemu/grub 模拟系统启动(多分区)

首先创建一块虚拟硬盘: dd bs512 count204800 if/dev/zero ofhd.img然后使用 losetup -f 将其关联为本地回环设备 losetup -f hd.img # 关联 hd.img 到空闲回环设备上 losetup -a /dev/loop0: [2080]:409 (/root/code/demo05/hd.img) # 查看刚刚关联到了哪里,这里关联到了 /d…

IEEE期刊论文模板

一、模板下载 1、登陆IEEE作者中心Author Center 地址:Publish with IEEE Journals - IEEE Author Center Journals 2、点击“Download a template” 3、在弹出的模板下载页面点击IEEE模板选择器“IEEE Template Selector” 4、在弹出的模板选择器页面点击“Tran…

分支预测失败的处理

由于现代的超标量处理器采用了很多预测的方法来执行指令,并不是流水线中所有的指令都可以退休(retire),例如当流水线中的某条分支指令发生了预测错误,或者某条指令发生了异常,那么在这条指令之后进入流水线的所有指令就不允许退休了; 此时需要将这些指令…

翻译: LLM大语言模型图像生成原理Image generation

文本生成是许多用户正在使用的,也是所有生成式人工智能工具中影响最大的。但生成式人工智能的一部分兴奋点也在于图像生成。目前也开始出现一些可以生成文本或图像的模型,这些有时被称为多模态模型,因为它们可以在多种模式中操作,…

代码随想录算法训练营第四十二天|背包问题理论基础、01背包理论基础(滚动数组)、416. 分割等和子集

代码随想录算法训练营第四十二天|背包问题理论基础、01背包理论基础(滚动数组)、416. 分割等和子集 背包问题理论基础 背包问题理论基础 文章讲解:https://programmercarl.com/%E8%83%8C%E5%8C%85%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%8001%E…

谈谈常用的分布式ID的设计方案?

典型回答 首先,我们需要明确通常的分布式ID定义,基本的要求包括: 全局唯一,区别于单点系统的唯一,全局是要求分布式系统内唯一。 有序性,通常都需要保证生成的ID是有序递增的。例如,在数据库存…

iframe 与主应用页面之间如何互相通信传递数据

背景 当我们的Web页面需要复用现有网站的页面时,我们通常会考虑代码层面的抽离引用,但是对于一些过于复杂的页面,通过 iframe 嵌套现有的网站页面也是一种不错的方式,。目前我就职的项目组就有多个业务利用 iframe 完成业务的复用…

springboot整合websocket实现控制输入流

WebSocket 是一种在客户端和服务器之间进行实时双向通信的协议。它提供了一种更高效、更可靠的替代方案,以替代传统的HTTP请求-响应模式。 WebSocket 的特点包括: 双向通信:客户端和服务器可以同时发送和接收消息,而不像HTTP一样需…

QT 基础篇

目录 QPushButton QT帮助文档 QT 对象树 QPushButton QPushButton是Qt图形界面控件中的一种,看英文的意思,他就是按钮,是最基本的图形控件之一。在我们的最基本的项目中,运行: 是一个空白的窗体,里面什么也没有&am…

云原生之深入解析如何在Kubernetes中快速启用Cgroup V2支持

一、cgroup v2 有哪些优势? Linux 中有两个 cgroup 版本:cgroup v1 和 cgroup v2。cgroup v2 是新一代的 cgroup API。Kubernetes 自 v1.25 起 cgroup2 特性正式 stable。cgroup v2 提供了一个具有增强资源管理能力的统一控制系统,cgroup v2…

在Node.js中使用MongoDB连接数据库、创建集合

本文主要介绍在Node.js中使用MongoDB连接数据库、创建集合的方法。 目录 连接数据库使用原生驱动程序连接MongoDB数据库使用Mongoose连接MongoDB数据库 创建集合使用mongodb驱动程序 连接数据库 在Node.js中使用MongoDB连接数据库有两种方式:使用原生驱动程序和使用…

静态HTTP应用的性能优化技巧

在Web开发中,静态HTTP应用以其简单、快速和安全的特点受到了广泛欢迎。然而,随着Web应用的规模不断扩大,性能问题也日益突出。本文将为你介绍一些静态HTTP应用的性能优化技巧,让你的应用飞得更快、更稳定。 一、压缩文件 文件压…

以pycharm为例,生成Python项目所需要的依赖库/包文档:requirements.txt

平时我们在编写或者使用别人的Python项目时,往往会看到一个文档requirements.txt,该文档是描述一个Python项目中的第三方库的名称以及版本。本文介绍导出python当前项目依赖包requirements.txt的操作步骤。 方法一:如果每个项目有对应的虚拟…

Sumdiv

title: Sumdiv date: 2023-12-12 21:45:09 tags: 分治 categories: 算法进阶指南 题目大意 求 A B A^B AB 的所有约数之和 m o d mod mod 9901 9901 9901( 1 1 1 ≤ \leq ≤ A , B A,B A,B ≤ \leq ≤ 5 ∗ 1 0 7 5 * 10 ^ 7 5∗107) 解题思路 将 A A A 分解质因数&…

4-Docker命令之docker export

1.docker export介绍 docker export命令是用来将docker容器中的文件系统导出为一个tar归档文件 2.docker export用法 docker export [参数] container [rootcentos79 ~]# docker export --helpUsage: docker export [OPTIONS] CONTAINERExport a containers filesystem a…

开源工业以太网现场总线协议栈汇总

开源现场总线协议栈 EtherNet/IP、EtherCAT master、Profinet开源汇总: EtherNet/IP:https://github.com/EIPStackGroup/OpENer EtherCAT master:https://gitlab.com/etherlab.org/ethercat EtherCAT master:https://github.com/OpenEtherCATsociety/soem http…

【C++】哈希表

文章目录 哈希概念哈希冲突哈希函数哈希表闭散列开散列 开散列与闭散列比较 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 哈希概念 顺…

PHP基础 - 数据类型

数据类型 序号数据类型描述1字符串(String)用于表示文本数据2整型(Integer)用于表示整数数据3浮点型(Float)用于表示带有小数部分的数值4布尔型(Boolean)用于表示真或假两个状态5数组(Array)用于存储多个值的有序集合6对象类型(Object)用于表示自定义的复杂数据结构…

CPython(将Python编译为so)

环境 先配一下环境,我使用的是python3.8.5 pip install Cython 编译过程 我们准备一个要编译的文件 test.py def xor(input_string): output_string "" for char in input_string: output_string chr(ord(char) ^ 0x66) return output_string…