python实现多EXCEL表格合并xls、xlsx格式
目录
- 前言
- 代码的特点
- 完整代码
- 感言
前言
以下都是我学习CSDN里面的各位大神的分享:
我主要参考目标-主体和弹窗
次要参考-进度显示
代码的特点
1、可以弹窗选择需要合并的文件所在文件夹;
2、可以设置excel的子项页签数量;
3、可以合并xls、xlsx格式;
注意:xlrd 版本要选择1.2的,不要用最新的,最新的不支持XLSX
完整代码
# 1 引入库
import tkinter as tk #选择文件夹功能用到的库
from tkinter import filedialog #弹出文件框,选择需要合并的文件所在的文件夹
import os #扫描文件夹中的文件用到的库
import xlrd #读取Excel文件的包
import xlsxwriter #将文件写入Excel的包# 3.1 打开文件
#打开excel
def OpenExcelxlsx(Filepath):try:file=xlrd.open_workbook(Filepath)return fileexcept Exception as e:print(e)# 3.2 获取excel文件信息
# 获取Excel中所有的sheet
def GetAllSheets(file):return file.sheets()# 获取某个sheet表的行数
def GetAllRows(table):return table.nrows# 3.3 读取所有文件的所有数据
#读取文件内容
def GetContent(excel,sheetNo):content=list() #声明一个变量,用于存数据try:sheets=GetAllSheets(excel) #对每个excel文件,获知它sheet的数量table=sheets[sheetNo] #对某个sheet进行操作except Exception as e: #异常处理print(e) #打印异常信息rows=GetAllRows(table) #某个sheet表格的行数for i in range(rows): #对每一行数据进行如下操作data=table.row_values(i) #提取该行的数据content.append(data) #将提取的数据存在list列表中return content #操作完成后,将提取的数据进行返回# 3.4 将读取的文件写入到新文件中
# 所有的Excel的所有sheets变成一个sheet
def Sum1(fileName, data):finalFile = xlsxwriter.Workbook(fileName) # 创建一个工作表文件sheet = finalFile.add_worksheet() # 为该工作表添加一个sheetcount = 0 # 由于每个sheet的数据数目不一样,因此需要计数for sheetId in range(len(data)):for row in range(len(data[sheetId])):for col in range(len(data[sheetId][row])):d = data[sheetId][row][col] # 提取数据sheet.write(count, col, d) # 将数据存入新文件中 <行,列,数据>count = count + 1 # 汇总文件中的行数+1finalFile.close() # 文件要进行关闭if __name__ == '__main__':'''打开选择文件夹对话框'''# 2 选择待合并文件所在的文件夹
root = tk.Tk() #初始化弹出文件库所需要的库
root.withdraw() #不加这个选择框消失不了
folderPath = filedialog.askdirectory() #获得选择好的文件夹# 3 读取所在文件夹中的xls文件,并进行合并
data = list() # 声明一个list变量,用来存数据,也可以用data=[]来初始化
fileSet = os.listdir(folderPath) # 扫描所选文件夹中所有文件
for file in fileSet:if file.endswith('.xlsx'): # 选择xls文件进行后续操作try:excel = OpenExcelxlsx(folderPath + '/' + file) # 打开excel文件except Exception as e:print(e) # 异常处理,避免程序无脑崩溃:如果打开失败就打印失败信息sheets = GetAllSheets(excel) # 获取excel文件中所有sheetfor i in range(1): # 对第一个sheet进行数据提取# for i in range(len(sheets)): # 对每个sheet进行数据提取,所有子表print("正在读取文件:" + str(file) + "的第" + str(i) + "个sheet表的内容...")data.append(GetContent(excel, i)) # 使用append方法将所有数据存起来fileName = str('/bom表.xlsx') # 合并后的文件
finalFilePath = folderPath + fileName # 给文件名加上文件目录,这样汇总文件就出现在当前目录了
Sum1(finalFilePath, data) # 将data中收集的数据存入到新建的文件夹中print("excel合并完成")
感言
这是我第一次在CSDN上面发表,感谢所有参与分享技术的大佬;
后面我会继续学习,因为现在还没完全满足我的使用需求,还需要手动操作表格,
如果有大佬可以分享一下就太好了,以下是我的疑问:
1、判断表头重复
2、判断列重复
3、除了表头重复,不同表格的指定列还存在重复即不考虑此表,并提示表格名称。
python实现多EXCEL表格合并xls、xlsx格式相关推荐
- python——多个excel表格合并到一个excel中的多个sheet中
引言:我们在工作学习中常常需要涉及到多个excel的处理,python给我们提供一种更快的数据处理方法. 一.应用范围:多个布局相同的excel. 二.软件准备:excel/wps.python. 三 ...
- python利用pandas合并excel表格代码_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- Python实现excel表格合并
使用Python实现excel表格合并(程序打包:pyinstaller -F ***.py): 一个excel文件的多sheet合并 文件夹下多个Excel文件的合并(单个文件的多sheet也会自动 ...
- Python对比VBA实现excel表格合并与拆分
1.Excel表格合并 我们在日常工作中经常会导出一些数据,但是这些数据较大可能是按照某个分类形成的单独表格,比如每一天的数据,每个品牌的数据等. 但是,我们在进行数据分析的时候可能往往需要对这些数据 ...
- python对数据进行合并的函数_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- python处理excel表格数据-零基础使用Python读写处理Excel表格的方法
引 由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是Python最容易操作. 安装库Python环境 首先当然是配环境,不过选Python的一个重要 ...
- python pandas合并单元格_利用Python pandas对Excel进行合并的方法示例
前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...
- python批量翻译excel表格中的英文
python批量翻译excel表格中的英文 需求背景 主要设计 分析 具体实现 表格操作 请求百度翻译api 多线程 控制台显示进度 完整源码 需求背景 女朋友的论文需要爬取YouTube视频热评,但 ...
- com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格
这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...
最新文章
- java中用byte[]数组实现的队列和用Byte[]实现的队列实际占用空间对比
- 服务器同时装mysql和sqlserver_Centos创建syslog服务器
- SRM 698 div1 RepeatString
- java oracle 排序_Oracle的排序和限制条件(order by 和where)
- flutter bloc_如何使用BLoC模式处理Flutter中的状态
- android aptx固件,新增aptX蓝牙发射协议,M5固件首次升级!
- SYN攻击原理以及检测防范技术
- 进程调度 操作系统第二章知识点归纳总结
- 网易严选退出双十一:“抵制”鼓吹过度消费
- js识别用户设备是移动端手机时跳转到手机网站
- 在ASP.NET中使用AJAX的简单方法 转载
- jpadao层继承什么_1岁英短蓝白母猫能卖多少钱,银渐层2岁公猫多少钱
- 计算机无法识别psp usb设备,PSP降级导致USB连接电脑识别问题解决办法
- 应用层协议 ——— HTTP协议
- 飞凌单片机解密_常见的IC芯片解密方法与原理解析!
- 在html中如何批量操作系统,网刻批量操作系统
- 数字日期格式转换yyyymmdd_Excel日期格式常用转换方法大全,关于日期函数
- 无线扫码枪 服务器查询异常,无线扫描枪常见问题及解决方法
- 物理学经济学java周易_八竿子打不着?——物理学和经济学的相似相通之处
- mysql sum契合_文化契合者为王。 这是在下一次开发人员面试中如何定位的方法。...
热门文章
- oracle-外币记账时总账余额表gl_balance变化(上)
- 如何快速、有效地管理海量的、分散的数据?佳农靠它实现数智化
- html群聊插件,团队群聊.html
- 26设计模式之建造者模式
- 结合Layui框架,实现SpringMVC+Spring+Mybatis,SSM整合案例CRUD(超详细代码,外加说明)
- 微信机器人控制linux,关于微信公共平台聊天机器人控制开启和关闭的代码
- Pair project(刘昊岩11061156 黄明源11061186)
- AttributeError: module ‘tushare‘ has no attribute ‘get_k_data‘报错解决方法
- 杂谈:WiFi包和buffer
- python惰性求值例子_惰性求值和yield-Python