在實際應(yīng)用中可能會有不同月份的數(shù)據(jù)或者不同周的報告等等的Excel數(shù)據(jù),都是單個獨立的文件,如果想要整體使用的話就需要合并一下了,這里提供這樣的一個功能,可以把指定目錄下的所有Excel數(shù)據(jù)合并成一個文件。
下面是具體的實踐:
#!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 中的數(shù)據(jù)
獲取整行和整列的值(返回數(shù)組)
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 數(shù)據(jù)
'''
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)