'''
將多個/一個excel表格中的sheet合並至新表格中的一個sheet
'''
1 # -*- coding: utf-8 -*- 2 3 # 導入需要使用的包 4 import xlrd # 讀取excel文件的包 5 import xlsxwriter # 將文件寫入excel的包 6 7 # 打開一個excel文件 8 def open_xls(file): 9 f = xlrd.open_workbook(file) 10 return f 11 12 # 獲取excel中所有的sheet表 13 def getsheet(f): 14 return f.sheets() 15 16 # 獲取sheet表的行數 17 def get_Allrows(f,sheet): 18 table = f.sheets()[sheet] 19 return table.nrows 20 21 # 讀取文件內容並返回行內容 22 def getFile(file,shnum): 23 f=open_xls(file) 24 table=f.sheets()[shnum] 25 num=table.nrows 26 for row in range(num): 27 rdata=table.row_values(row) 28 datavalue.append(rdata) 29 return datavalue 30 31 # 獲取sheet表的個數 32 def getshnum(f): 33 x=0 34 sh=getsheet(f) 35 for sheet in sh: 36 x+=1 37 return x 38 39 # 函數入口 40 if __name__=='__main__': 41 # # 定義要合並的excel文件列表 42 # dir = './tstdb' 43 # # 獲取目錄下所有的表 44 # allxls = os.listdir(dir) 45 allxls=['./tables.xls'] #列表中的為要讀取的文件路徑 46 # 存儲所有讀取的結果 47 datavalue=[] 48 for fl in allxls: 49 # fl = os.path.join(dir,onexls) 50 f=open_xls(fl) 51 x=getshnum(f) 52 for shnum in range(x): 53 print("正在讀取文件:"+str(fl)+"的第"+str(shnum)+"個sheet表的內容...") 54 rvalue=getFile(fl,shnum) 55 # 定義最終合並后生成的新文件 56 endfile='excel.xlsx' 57 wb=xlsxwriter.Workbook(endfile) 58 # 創建一個sheet工作對象 59 ws=wb.add_worksheet() 60 for a in range(len(rvalue)): 61 for b in range(len(rvalue[a])): 62 c=rvalue[a][b] 63 ws.write(a,b,c) 64 wb.close() 65 print("文件合並完成")