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数据的函数,不管是不是合并单元格都能完成数据读取。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挨踢~小先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值