python-利用xlrd模塊中讀取有合並單元格的excel數據


  • 前言
    對於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信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM