#!/usr/bin/env python import xlsxwriter,xlrd import sys,os.path reload(sys) sys.setdefaultencoding('utf8') def MergeExcelToWorksheet(*arg): lfile=arg fname={} worksheet={} for h in lfile: fname[h] = h print h data = xlrd.open_workbook(fname[h]) # 打开fname文件 data.sheet_names() # 获取xls文件中所有sheet的名称 table = data.sheet_by_index(0) # 通过索引获取xls文件第0个sheet nrows = table.nrows # 获取table工作表总行数 ncols = table.ncols # 获取table工作表总列数 #workbook = xlsxwriter.Workbook('hh.xlsx') #创建一个excel文件 worksheet[h] = workbook.add_worksheet(str(h)) #创建一个工作表对象 worksheet[h].set_column(0,ncols,20) #设定列的宽度为22像素 #border:边框,align:对齐方式,bg_color:背景颜色,font_size:字体大小,bold:字体加粗 top = workbook.add_format({'border':1,'align':'center','bg_color':'cccccc','font_size':13,'bold':True}) text = workbook.add_format({'border':1,'align':'center','bg_color':'white','font_size':12}) blank = workbook.add_format({'border':1}) for i in xrange(nrows): worksheet[h].set_row(i,22) #设定第i行单元格属性,高度为22像素,行索引从0开始 for j in xrange(ncols): cell_value = table.cell_value(i,j,) #获取第i行中第j列的值 if i == 0: format = top worksheet[h].write(i,j,cell_value,format) #把获取到的值写入文件对应的行列 format.set_align('vcenter') else: format = text if j == 13 or j == 14 or j == 15 or j == 23: #特定列设置时间格式 text.set_num_format('yyyy-mm-dd hh:mm:ss') #设置时间格式 worksheet[h].write(i,j,cell_value,format) format.set_align('vcenter') if j != 13 and j != 14 and j != 15 and j != 23: text = workbook.add_format({'border':1,'align':'center','bg_color':'white','font_size':12}) worksheet[h].write(i,j,cell_value,format) format.set_align('vcenter') if __name__ == '__main__': workbook = xlsxwriter.Workbook('result.xlsx') #创建一个excel文件 MergeExcelToWorksheet('test1.xlsx','test2.xlsx') workbook.close()
代码及注释有引用其它资料,主要做修改,合并多个excel(以工作表的方式)