1. 程式人生 > >python讀取excel檔案中所有sheet表格:openpyxl模組(二)

python讀取excel檔案中所有sheet表格:openpyxl模組(二)

通過openpyxl模組 迴圈遍歷excel檔案中所有sheet表格。

excel檔案 e:\\t.xlsx ,有2個sheet:  

sales

客戶編碼	年月	銷售額(萬元)
JLF0001	201601 	380.911
JLF0002	201601 	670.015
JLF0003	201601 	193.208
JLF0004	201601 	34.061
JLF0005	201601 	565.88
SJLH0006	201601 	910.788
SJLH0007	201601 	248.901
SJLH0008	201601 	525.305
SJLH0009	201601 	333.548
LG0010	201601 	1031.233
LG0011	201601 	171.034
LG0012	201601 	893.994
LG0013	201601 	631.179
LG0014	201601 	752.132
YF0015	201601 	1010.865
YF0016	201601 	961.7
YF0017	201601 	641.959
DRF0018	201601 	156.505
DRF0019	201601 	257.043
DRF0020	201601 	322.802
DRF0021	201601 	493.298
DRF0022	201601 	964.793
PFLH0023	201601 	720.269
PFLH0024	201601 	508.636
PFLH0025	201601 	166.223
PFLH0026	201601 	970.758
JLF0001	201602 	565.458
JLF0002	201602 	242.569
JLF0003	201602 	251.056
JLF0004	201602 	73.336
JLF0005	201602 	478.217
SJLH0006	201602 	423.748
SJLH0007	201602 	760.715
SJLH0008	201602 	740.672
SJLH0009	201602 	976.413
LG0010	201602 	891.867
LG0011	201602 	196.07
LG0012	201602 	795.677
LG0013	201602 	318.742
LG0014	201602 	374.868
YF0015	201602 	698.005
YF0016	201602 	129.207
YF0017	201602 	668.375
DRF0018	201602 	895.893
DRF0019	201602 	165.05
DRF0020	201602 	989.937
DRF0021	201602 	281.775
DRF0022	201602 	493.085
PFLH0023	201602 	965.011
PFLH0024	201602 	705.788
PFLH0025	201602 	381.18
PFLH0026	201602 	494.359
store
客戶名稱	客戶編碼	門店經理	聯絡電話	總公司
家樂福華翔店	JLF0001	張小	13885543175	家樂福
家樂福魯班店	JLF0002	李小	13947307567	家樂福
家樂福雙井店	JLF0003	王五	13814451372	家樂福
家樂福華強北店	JLF0004	李六	13431835911	家樂福
家樂福九龍店	JLF0005	劉大	13907503491	家樂福
世紀聯華大寧店	SJLH0006	張三	13656648200	世紀聯華
世紀聯華回龍觀店	SJLH0007	李四	13595016793	世紀聯華
世紀聯華五角場店	SJLH0008	黃三	13571233335	世紀聯華
世紀聯華中山公園店	SJLH0009	吳經理	13878398999	世紀聯華
樂購三裡橋店	LG0010	洪經理	13471662230	樂購
樂購西紅門店	LG0011	阮經理	13574331991	樂購
樂購六裡橋店	LG0012	楊經理	13593898873	樂購
樂購朝陽門店	LG0013	樸經理	13918551523	樂購
樂購天寧寺店	LG0014	佘經理	13875581623	樂購
益豐大藥房靜安寺店	YF0015	何經理	13631153296	益豐大藥房
益豐大藥房普陀店	YF0016	呂經理	13636974620	益豐大藥房
益豐大藥房長安大街店	YF0017	趙經理	13985911395	益豐大藥房
大潤發華翔店	DRF0018	錢經理	13778777529	大潤發
大潤發魯班店	DRF0019	孫經理	13562409883	大潤發
大潤發泗涇店	DRF0020	李經理	13436440586	大潤發
大潤發松江店	DRF0021	周經理	13445030753	大潤發
大潤發新源裡店	DRF0022	吳經理	13633069663	大潤發
卜蜂蓮花楊高北路店	PFLH0023	鄭經理	13572247063	卜蜂蓮花
卜蜂蓮花楊川沙店	PFLH0024	王經理	13946094869	卜蜂蓮花
卜蜂蓮花楊高南路店	PFLH0025	馮經理	13612290949	卜蜂蓮花
卜蜂蓮花楊吳中路店	PFLH0026	陳經理	13925668293	卜蜂蓮花
操作步驟:

(1)用load_workbook函式開啟excel檔案,返回一個工作簿物件

(2)用工作簿物件獲取所有的sheet

(3)第一個for迴圈遍歷所有sheet

(4)每次遍歷sheet時,先用get_sheet_by_name獲取要遍歷的sheet

(5)開始下一個for迴圈,迴圈遍歷這個sheet中的所有行

(6)在遍歷每一行的for迴圈中,遍歷每一列,把每一列的值,通過join函式拼接起來,這裡用ljust函式進行左對齊

程式碼如下:

#  -*- coding:gbk -*-

import openpyxl

wb = openpyxl.load_workbook('e:\\t.xlsx')

#獲取workbook中所有的表格
sheets = wb.get_sheet_names()

print(sheets)

#迴圈遍歷所有sheet
for i in range(len(sheets)):
    sheet= wb.get_sheet_by_name(sheets[i])
    
    print('\n\n第'+str(i+1)+'個sheet: ' + sheet.title+'->>>')

    for r in range(1,sheet.max_row+1):
        if r == 1:
            print('\n'+''.join([str(sheet.cell(row=r,column=c).value).ljust(17) for c in range(1,sheet.max_column+1)] ))
        else:
            print(''.join([str(sheet.cell(row=r,column=c).value).ljust(20) for c in range(1,sheet.max_column+1)] ))

輸出: