之前想把一个工作簿中结构相同的多个sheet进行合并,由于sheet太多,不可能手动完成,又不会VBA编程,所以就谢了一个实现此功能的python程序。希望对有相同需求的兄弟姐妹有帮助。
用到的Python模块如下:
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工作簿如图:
sheets:
每个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,存储的是所有合并后的数据。如图:
这就完成了,其实很简单吧!