-
前言
對於excel中有合並單元格的情況,合並的單元格只能取到第一個單元格的值,合並的單元格后面的單元格內容的值為空,針對這個情況,寫了下面一段代碼實現,
對單元格進行判斷,如果是傳入的索引是合並單元格范圍,取值合並單元格的第一個單元格的值,如果是非合並單元格,取本單元格的內容 -
merged_cells 屬性介紹
import xlrd workbook = xlrd.open_workbook('./data/test_data.xlsx') sheet = workbook.sheet_by_name('Sheet1') # merged_cells 返回的是一個列表,每一個元素是合並單元格的位置信息的數組,數組包含四個元素(起始行索引,結束行索引,起始列索引,結束列索引) print( sheet.merged_cells )
-
excel樣式
-
實現代碼
# 獲取有合並單元格的實現方式
merge_cell_list = ws.merged_cells #(起始行索引,結束行索引,起始列索引,結束列索引)
row_index = 11
col_index = 2
for (min_row,max_row,min_col,max_col) in merge_cell_list:
if row_index >= min_row and row_index < max_row:
if col_index >= min_col and col_index < max_col:
cell_value = ws.cell_value(min_row,min_col)
break #匹配條件就退出,不然后面循環會把前面的值覆蓋
else:
cell_value = ws.cell_value(row_index,col_index)
else:
cell_value = ws.cell_value(row_index, col_index)
print(cell_value)
備注:
1.在后續運用過程中發現xlrd模塊,不支持xls格式的excel了。
2.上面方式加載excel后,merged_cells是一個空的list。
解決方式:在打開.xls的open_workbook函數中,加入一個formatting_info=True這樣的參數,這樣就可以獲得sheet的merged_cells信息