码迷,mamicode.com
首页 > 编程语言 > 详细

使用python将多个excel合并

时间:2017-12-09 14:52:42      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:nal   add   open   目的   excel   实现   []   book   打开   

 最近看视频学习,老师布置了个作业,关于如何使用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合并

标签:nal   add   open   目的   excel   实现   []   book   打开   

原文地址:http://www.cnblogs.com/zlhuan/p/8011304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!