Python 讀 EXCEL
先
from xlrd import open_workbook
開放excel檔 a.xlsx
wk = open_workbook('a.xlsx')
查看有哪些sheet
for s in wk.sheets():
print "Sheet: $s has cols: $s and rows: $s" % (s.name, s.ncols, s.nrows)
讀第一個sheet 的每一列的資料
for r in range(wk.sheets()[0].nrows):
print wk.sheets()[0].cell_value(r, 3) #第4欄
print wk.sheets()[0].cell_value(r, 5) #第6欄
如果遇到合併格
如此這般即可處理
from xlrd import open_workbook
開放excel檔 a.xlsx
wk = open_workbook('a.xlsx')
查看有哪些sheet
for s in wk.sheets():
print "Sheet: $s has cols: $s and rows: $s" % (s.name, s.ncols, s.nrows)
讀第一個sheet 的每一列的資料
for r in range(wk.sheets()[0].nrows):
print wk.sheets()[0].cell_value(r, 3) #第4欄
print wk.sheets()[0].cell_value(r, 5) #第6欄
如果遇到合併格
s = wk.sheets()[0]
table = s.merged_cells
merCell = {}
for r in range(s.nrows):
for t in table:
if r>=t[0] and r< t[1]:
if s.cell_value(r,0) != "":
merCells[t] = s.cell_value(r,0)
因為s.merged_cells會給出,sheet中所有合併格範圍的list如下
[(1, 8, 0, 1), (48, 56, 0, 1), (39, 45, 0, 1), (8, 32, 0, 1), (45, 48, 0, 1), (85, 93, 0, 1), (93, 109, 0, 1), (56, 64, 0, 1), (83, 85, 0, 1), (32, 38, 0, 1), (77, 83, 0, 1), (64, 73, 0, 1), (73, 77, 0, 1)]
以第一個元素 (1,8,0,1)是指這個合併格的 row 是 1<= row < 8 , 0<=col < 1這個範圍。
所以我們做一個字典,merCell。以merged_cells的元素為key。
上面的結果就會 print merCells 就會看到
{(85, 93, 0, 1): u'Lta', (8, 32, 0, 1): u'LTb',...}
之後只要檢驗列與欄是否在合併格範圍,就可以查merCells得到要的值。
如此這般即可處理
留言
張貼留言