1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python实现多EXCEL表格合并xls xlsx格式

python实现多EXCEL表格合并xls xlsx格式

时间:2020-05-21 09:57:06

相关推荐

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 打开文件#打开exceldef OpenExcelxlsx(Filepath):try:file=xlrd.open_workbook(Filepath)return fileexcept Exception as e:print(e)# 3.2 获取excel文件信息# 获取Excel中所有的sheetdef 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变成一个sheetdef 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、除了表头重复,不同表格的指定列还存在重复即不考虑此表,并提示表格名称。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。