在实际应用中可能会有不同月份的数据或者不同周的报告等等的Excel数据,都是单个独立的文件,如果想要整体使用的话就需要合并一下了,这里提供这样的一个功能,可以把指定目录下的所有Excel数据合并成一个文件。
下面是具体的实践:
#!usr/bin/env python
#encoding:utf-8
'''
__Author__:沂水寒城
功能:合并同一文件目录下的所有Excel文件
'''
import os
import re
import sys
import xlrd
import xlwt
reload(sys)
sys.setdefaultencoding("utf-8")
def readOneExcelData(datapath='testdata.xls'):
'''
读取单个 Excel 中的数据
获取整行和整列的值(返回数组)
table.row_values(i)
table.col_values(i)
'''
workbook=xlrd.open_workbook(datapath,'rb')
table=workbook.sheets()[0]
row_num,col_num=table.nrows,table.ncols
data_list=[]
for i in range(1,row_num):
data_list.append(table.row_values(i))
return data_list
def write2Excel(data_list,savepath='merge_data.xls'):
'''
写到 Excel 中
'''
i=0
workbook=xlwt.Workbook(encoding='utf-8')
table=workbook.add_sheet('sheet')
for one_list in data_list:
for j in range(one_list):
table.write(i,j,content[j])
i+=1
workbook.save(savepath)
def mergeOneDir(filepath='heze/mudanqu/',savepath='merge_data.xls'):
'''
合并一个文件夹下面的所有 Excel 数据
'''
data_list=[]
file_list=os.listdir(filepath)
for one_excel in file_list:
one_file=filepath+one_excel
one_data_list=readOneExcelData(datapath=one_file)
if not data_list:
data_list=one_data_list
else:
data_list+=one_data_list[1:]
write2Excel(data_list,savepath)
if __name__ == '__main__':
print "Input Merge Dir:"
one_dir=raw_input()
print "Input save Path:"
one_path=raw_input()
one_path=one_dir+one_path
mergeOneDir(one_dir,one_path)
使用一下还是能省点事的!