python常識系列15-->python利用xlrd處理合並單元格


前言

   沒有退路的時候,正是潛力發揮最大的時候。

一、合並單元格介紹

如下圖所示:

二、操作合並單元格

2.1 用之前xlrd普通的做法操作合並單元格試試

import xlrd

workbook = xlrd.open_workbook('./data/test_data.xlsx')
sheet = workbook.sheet_by_name('Sheet1')
cell_value = sheet.cell_value(1,0)  # 獲取第二行第一個單元格內容
print( "01:" + str(cell_value) )
cell_value = sheet.cell_value(2,0)  # 獲取第三行第一個單元格內容
print(  "02:" + str(cell_value) )
cell_value = sheet.cell_value(3,0)  # 獲取第四行第一個單元格內容
print(  "03:" + str(cell_value) )

使用上述代碼,為的是打印三個已合並的單元格的值,結果如下:

01:學習python編程
02:
03:

此時會發現,合並單元格后會把數據放在合並單元格左上角第一個單元內,其它合並單元格的內容為空。如果是這樣讀取數據不太合理,最好是做到所有合並的單元格都能顯示單元格的值,即第三行、第四行都顯示 學習python編程

2.2 xlrd中的 merged_cells 屬性介紹

import xlrd

workbook = xlrd.open_workbook('./data/test_data.xlsx')
sheet = workbook.sheet_by_name('Sheet1')
# merged_cells 獲取當前表格所有合並單元格的位置信息 ,返回一個列表
print( sheet.merged_cells )

執行上述代碼的結果如下:

[(1, 5, 0, 1)]

merged_cells 返回的是一個列表,每一個元素是合並單元格的位置信息的數組,數組包含四個元素(起始行,結束行,起始列,結束列)

2.3 可以通過判斷的方式實現給合並單元格每一個都賦值

import xlrd

workbook = xlrd.open_workbook('./data/test_data.xlsx')
sheet = workbook.sheet_by_name('Sheet1')
# merged_cells 獲取當前表格所有合並單元格的位置信息 ,返回一個列表
merged = sheet.merged_cells
row_index = 3  ; col_index = 0
for (rlow, rhigh, clow, chigh) in merged:  # 遍歷表格中所有合並單元格位置信息
    if (row_index >= rlow and row_index < rhigh):  # 行坐標判斷
        if (col_index >= clow and col_index < chigh):  # 列坐標判斷
            # 如果滿足條件,就把合並單元格第一個位置的值賦給其它合並單元格
            cell_value = sheet.cell_value(rlow,clow)
print( cell_value )

利用循環的方式去判斷要取值的單元格是否是合並單元格,如果是則把第一個位置的值賦給其它合並單元格,上述代碼只考慮合並單元格的情況。

三、小結

  • 通過上述代碼,大家發現,需要用循環判斷的方式來處理合並單元格,xlrd並沒有默認處理好合並單元格;
  • 上述代碼拋磚引玉,簡單的對合並單元格進行非常直接的處理,讀者們可以更進一步做成一個讀取excel數據的函數,不管是不是合並單元格都能完成數據讀取。


免責聲明!

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



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