python 合并Excel中已有的N个sheet,并且把合并后的数据保存为新的sheet

之前想把一个工作簿中结构相同的多个sheet进行合并,由于sheet太多,不可能手动完成,又不会VBA编程,所以就谢了一个实现此功能的python程序。希望对有相同需求的兄弟姐妹有帮助。

用到的Python模块如下:

  • xlrd
  • pandas
  • openpyxl

xlrd、pandas、openpyxl

1、python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
2、pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。pandas具体的用法可以参考博客https://blog.csdn.net/liufang0001/article/details/77856255/
3、openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。openpyxl中有三个不同层次的类,Workbook是对工作簿的抽象,Worksheet是对表格的抽象,Cell是对单元格的抽象,每一个类都包含了许多属性和方法。

Excel工作簿结构

想要解决的Excel工作簿如图:
sheets:
N个sheet
每个sheet的结构相同:
字段相同
那我们就可以用下面的程序实现所有sheet进行合并,并且把合并的数据保存到新的sheet中。详细代码如下:

代码块

# -*- coding: UTF-8 -*-
#导入所需模块
import xlrd
import pandas as pd
from  pandas import DataFrame
from openpyxl import load_workbook

excel_name = 'C:\Users\Administrator.EIT-20130101CMN\Desktop\\aaa.xlsx'  #表格地址+表格名
wb = xlrd.open_workbook(excel_name) 
# 获取workbook中所有的表格
sheets = wb.sheet_names()
# print sheets

# 循环遍历所有sheet
alldata = DataFrame()
for i in range(len(sheets)):
    df = pd.read_excel(excel_name, sheet_name=i, index=False, encoding='utf8')
    alldata = alldata.append(df)
#查看dataframe
#print alldata

#保存为新的sheet,首先新建sheet,合并后的数据保存到新sheet中
writer = pd.ExcelWriter('C:\Users\Administrator.EIT-20130101CMN\Desktop\\aaa.xlsx',engin='openpyxl')
book = load_workbook(writer.path)
writer.book = book

#利用dataframe.to_excel保存合并后的数据到新的sheet
alldata.to_excel(excel_writer=writer,sheet_name="ALLDATA")#生成新的sheet命名为ALLDATA
writer.save()
writer.close()
print '处理完成!'

查看结果

执行上面的程序,打开处理的Excel工作簿,你会发现其中多出一个名为ALLDATA的sheet,此sheet即为目标sheet,存储的是所有合并后的数据。如图:
这里写图片描述
python 合并Excel中已有的N个sheet,并且把合并后的数据保存为新的sheet_第1张图片

这就完成了,其实很简单吧!

你可能感兴趣的:(Python)