Python利⽤xlrd处理合并单元格
转载来源:
⼀、合并单元格介绍
如下图所⽰:
⼆、操作合并单元格
2.1 ⽤之前xlrd普通的做法操作合并单元格试试
import xlrd
workbook = xlrd.open_workbook('./data/test_data.xlsx')
sheet = workbook.sheet_by_name('Sheet1')
cell_value = ll_value(1,0)  # 获取第⼆⾏第⼀个单元格内容
print( "01:" + str(cell_value) )
cell_value = ll_value(2,0)  # 获取第三⾏第⼀个单元格内容
print(  "02:" + str(cell_value) )
cell_value = ll_value(3,0)  # 获取第四⾏第⼀个单元格内容
print(  "03:" + str(cell_value) )
python数组合并使⽤上述代码,为的是打印三个已合并的单元格的值,结果如下:
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( d_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 = d_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 = ll_value(rlow,clow)
print( cell_value )
利⽤循环的⽅式去判断要取值的单元格是否是合并单元格,如果是则把第⼀个位置的值赋给其它合并单元格,上述代码只考虑合并单元格的情况。
三、⼩结
通过上述代码,⼤家发现,需要⽤循环判断的⽅式来处理合并单元格,xlrd并没有默认处理好合并单元格;
上述代码抛砖引⽟,简单的对合并单元格进⾏⾮常直接的处理,读者们可以更进⼀步做成⼀个读取excel数据的函数,不管是不是合并单元格都能完成数据读取。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。