使用python将多个excel合并
Posted 我的旧博客地址:
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用python将多个excel合并相关的知识,希望对你有一定的参考价值。
最近看视频学习,老师布置了个作业,关于如何使用python将多个excel进行合并,老师写的代码我感觉比较复杂,下面是我自己改良之后较简单的方式。
实现这个功能主要有两种方法,一种是用xlrd,xlsxwriter库结合,不管是xlsx,xls都是适用的;另一种是openpyxl,这个库只对xlsx有效。
本文针对第一种方式进行讲解。
首先准备三个excel文件,目的是将三个excel的sheet进行合并:
test_excel1.xlsx
为了简化测试,另外两个excel文件test_excel2.xlsx, test_excel3.xlsx的内容跟第一个excel是一致的。
下面是代码部分:
1 # -*- coding:utf-8 -*- 2 3 import xlrd,xlsxwriter 4 5 #待合并excel 6 allxls=["E:\\\\python3_hellobi_work\\\\excel\\\\test_excel\\\\test_excel1.xlsx", 7 "E:\\\\python3_hellobi_work\\\\excel\\\\test_excel\\\\test_excel2.xlsx", 8 "E:\\\\python3_hellobi_work\\\\excel\\\\test_excel\\\\test_excel3.xlsx"] 9 10 #目标excel 11 end_xls="E:\\\\python3_hellobi_work\\\\excel\\\\test_excel\\\\final_excel.xlsx" 12 13 14 def open_xls(file): 15 try: 16 fh=xlrd.open_workbook(file) 17 return fh 18 except Exception as e: 19 print("打开文件错误:"+e) 20 21 22 #根据excel名以及第几个标签信息就可以得到具体标签的内容 23 def get_file_value(filename,sheetnum): 24 rvalue=[] 25 fh=open_xls(filename) 26 sheet=fh.sheets()[sheetnum] 27 row_num=sheet.nrows 28 for rownum in range(0,row_num): 29 rvalue.append(sheet.row_values(rownum)) 30 return rvalue 31 32 33 #获取第一个excel的sheet个数以及名字作为标准 34 first_file_fh=open_xls(allxls[0]) 35 first_file_sheet=first_file_fh.sheets() 36 first_file_sheet_num=len(first_file_sheet) 37 sheet_name=[] 38 for sheetname in first_file_sheet: 39 sheet_name.append(sheetname.name) 40 41 42 #定义一个目标excel 43 endxls=xlsxwriter.Workbook(end_xls) 44 45 all_sheet_value=[] 46 47 #把所有内容都放到列表all_sheet_value中 48 for sheet_num in range(0,first_file_sheet_num): 49 all_sheet_value.append([]) 50 for file_name in allxls: 51 print("正在读取"+file_name+"的第"+str(sheet_num+1)+"个标签...") 52 file_value=get_file_value(file_name,sheet_num) 53 all_sheet_value[sheet_num].append(file_value) 54 55 #print(all_sheet_value) 56 57 num=-1 58 sheet_index=-1 59 60 #将列表all_sheet_value的内容写入目标excel 61 for sheet in all_sheet_value: 62 sheet_index+=1 63 end_xls_sheet=endxls.add_worksheet(sheet_name[sheet_index]) 64 num+=1 65 num1=-1 66 for sheet1 in sheet: 67 for sheet2 in sheet1: 68 num1+=1 69 num2=-1 70 for sheet3 in sheet2: 71 num2+=1 72 #print(num,num1,num2,sheet3) 73 #在第num1行的第num2列写入sheet3的内容 74 end_xls_sheet.write(num1,num2,sheet3) 75 76 77 endxls.close()
运行代码得到的目标excel:
好啦,写完了。
以上是关于使用python将多个excel合并的主要内容,如果未能解决你的问题,请参考以下文章
使用Python合并多个有密码的EXCEL表格时,密码已知,该怎么改进一下代码实现合并?