使用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表格时,密码已知,该怎么改进一下代码实现合并?

Python代码阅读(第19篇):合并多个字典

如何将多个excel文件合并?

python合并多个EXCEL表

python操作Excel表格小妙招:只需十行代码,可以将多张Excel合并为一张

求助,使用Python合并多个EXCEL表格时,如果表格有密码,密码已知,该怎么通过pandas合并,