python合并多个excel

前言

1.工作中,经常需要合并多个Excel文件 。如果文件数量比较多,则工作量大,易出错,此时,可以使用Python来快速的完成合并 。2.使用方法:将需要合并的多个Excel文件放到同一个文件夹下,程序运行后,输入文件夹目录的地址即可,完成合并后会将合并后的文件放在当前目录下 。3.可以查看代码的详细编写,或者直接到最后复制完整代码使用 。
代码编写1.导包import osimport xlrdimport xlsxwriterimport glob2.定义位置和表头biao_tou = "NULL"wei_zhi = "NULL"3.获取要合并的所有exce表格def get_exce():global wei_zhiwei_zhi = input("请输入Excel文件所在的目录:")all_exce = glob.glob(wei_zhi + "*.xls")print("该目录下有" + str(len(all_exce)) + "个excel文件:")if (len(all_exce) == 0):return 0else:for i in range(len(all_exce)):print(all_exce[i])return all_exce4.打开Exce文件def open_exce(name):fh = xlrd.open_workbook(name)return fh5.获取exce文件下的所有sheet# 获取exce文件下的所有sheetdef get_sheet(fh):sheets = fh.sheets()return sheets6.获取sheet下有多少行数据def get_sheetrow_num(sheet):return sheet.nrows7.获取sheet下的数据def get_sheet_data(sheet, row):for i in range(row):if (i == 0):global biao_toubiao_tou = sheet.row_values(i)continuevalues = sheet.row_values(i)all_data1.append(values)return all_data18.主函数if __name__ == '__main__':all_exce = get_exce()# 得到要合并的所有exce表格数据if (all_exce == 0):print("该目录下无.xls文件!请检查您输入的目录是否有误!")os.system('pause')exit()all_data1 = []# 用于保存合并的所有行的数据# 下面开始文件数据的获取for exce in all_exce:fh = open_exce(exce)# 打开文件sheets = get_sheet(fh)# 获取文件下的sheet数量for sheet in range(len(sheets)):row = get_sheetrow_num(sheets[sheet])# 获取一个sheet下的所有的数据的行数all_data2 = get_sheet_data(sheets[sheet], row)# 获取一个sheet下的所有行的数据all_data1.insert(0, biao_tou)# 表头写入# 下面开始文件数据的写入new_exce = wei_zhi + "总数据.xlsx"# 新建的exce文件名字fh1 = xlsxwriter.Workbook(new_exce)# 新建一个exce表new_sheet = fh1.add_worksheet()# 新建一个sheet表for i in range(len(all_data1)):for j in range(len(all_data1[i])):c = all_data1[i][j]new_sheet.write(i, j, c)fh1.close()# 关闭该exce表print("文件合并成功,请查看“" + wei_zhi + "”目录下的总数据.xlsx文件!")os.system('pause')os.system('pause')完整代码import osimport xlrdimport xlsxwriterimport globbiao_tou = "NULL"wei_zhi = "NULL"# 获取要合并的所有exce表格def get_exce():global wei_zhiwei_zhi = input("请输入Excel文件所在的目录:")all_exce = glob.glob(wei_zhi + "*.xls")print("该目录下有" + str(len(all_exce)) + "个excel文件:")if (len(all_exce) == 0):return 0else:for i in range(len(all_exce)):print(all_exce[i])return all_exce# 打开Exce文件def open_exce(name):fh = xlrd.open_workbook(name)return fh# 获取exce文件下的所有sheetdef get_sheet(fh):sheets = fh.sheets()return sheets# 获取sheet下有多少行数据def get_sheetrow_num(sheet):return sheet.nrows# 获取sheet下的数据def get_sheet_data(sheet, row):for i in range(row):if (i == 0):global biao_toubiao_tou = sheet.row_values(i)continuevalues = sheet.row_values(i)all_data1.append(values)return all_data1if __name__ == '__main__':all_exce = get_exce()# 得到要合并的所有exce表格数据if (all_exce == 0):print("该目录下无.xls文件!请检查您输入的目录是否有误!")os.system('pause')exit()all_data1 = []# 用于保存合并的所有行的数据# 下面开始文件数据的获取for exce in all_exce:fh = open_exce(exce)# 打开文件sheets = get_sheet(fh)# 获取文件下的sheet数量for sheet in range(len(sheets)):row = get_sheetrow_num(sheets[sheet])# 获取一个sheet下的所有的数据的行数all_data2 = get_sheet_data(sheets[sheet], row)# 获取一个sheet下的所有行的数据all_data1.insert(0, biao_tou)# 表头写入# 下面开始文件数据的写入new_exce = wei_zhi + "总数据.xlsx"# 新建的exce文件名字fh1 = xlsxwriter.Workbook(new_exce)# 新建一个exce表new_sheet = fh1.add_worksheet()# 新建一个sheet表for i in range(len(all_data1)):for j in range(len(all_data1[i])):c = all_data1[i][j]new_sheet.write(i, j, c)fh1.close()# 关闭该exce表print("文件合并成功,请查看“" + wei_zhi + "”目录下的总数据.xlsx文件!")os.system('pause')os.system('pause')

经验总结扩展阅读