zoukankan      html  css  js  c++  java
  • 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信息

  • 相关阅读:
    【HNOI 2002】 营业额统计
    【BZOJ 3224】 普通平衡树
    【NOIP2014】 联合权值
    【NOIP2016】 组合数问题
    BZOJ2212 POI2011Tree Rotations(线段树合并)
    LOJ114 k大(xiao)异或和(线性基)
    LOJ121 动态图连通性(LCT)
    BZOJ3569 DZY Loves Chinese II(随机化+树上差分+线性基)
    BZOJ3237 AHOI2013连通图(线段树分治+并查集)
    BZOJ2208 JSOI2010连通数(floyd+bitset)
  • 原文地址:https://www.cnblogs.com/ritaliu/p/13432340.html
Copyright © 2011-2022 走看看