zoukankan      html  css  js  c++  java
  • python使用xlrd读取合并单元格

    合并单元格

     操作方法:

    1.使用xlrd自带属性:merged_cells

    # 获取表格中所有合并单元格位置,以列表形式返回 (起始行,结束行,起始列,结束列)
    merged = sheet.merged_cells #结果:[(1,5,0,1),(5,9,0,1)]

    2.使用循环判断是合并单元格还是普通单元格,并将合并单元格中的首行值赋值给合并单元格

    def get_cell_type(row_index, col_index):
        """既能得到合并单元格也能得到普通单元格"""
        cell_value = None
        for (rlow, rhigh, clow, chigh) in merged:  # 遍历表格中所有合并单元格位置信息
            # print(rlow,rhigh,clow,chigh)
            if (row_index >= rlow and row_index < rhigh):  # 行坐标判断
                if (col_index >= clow and col_index < chigh):  # 列坐标判断
                    # 如果满足条件,就把合并单元格第一个位置的值赋给其它合并单元格
                    cell_value = sheet.cell_value(rlow, clow)
                    print('合并单元格')
                    break  # 不符合条件跳出循环,防止覆盖
                else:
                    print('普通单元格')
                    cell_value = sheet.cell_value(row_index, col_index)
    
            # else:  添加改行后只那一个单元格的内容5,0 会返回2个值普通单元格/合并单元格
            #     print('普通单元格')
            #     cell_value = sheet.cell_value(row_index, col_index)
    
        return cell_value
    
    
    # 直接输入单元格的坐标。来获取单元格内容
    # print(get_cell_type(5, 0))
    
    # 利用循环输出某列的单元格内容
    for i in range(1, 9):
        print(get_cell_type(i, 2))

     

    PS:最简单的读取Excel文件中合并单元格操作

    问题:

    1.当输出内容时,使用坐标来获取print,若最外层有else会返回2个值(还在确认若无最外层else是否会有其他问题存在)

    2.第一次使用时可以正常,再次使用时sheet.merged_cells返回列表为空??

    解决方法:在打开文件中加入formatting_info=True,就能正常显示

  • 相关阅读:
    网站漏洞扫描工具Uniscan
    iOS 11开发教程(八)定制iOS11应用程序图标
    iOS 11开发教程(七)编写第一个iOS11代码Hello,World
    UDP转TCP隧道工具udptunnel
    iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面
    Web服务评估工具Nikto
    iOS 11开发教程(五)iOS11模拟器介绍二
    网络数据修改工具netsed
    iOS 11开发教程(四)iOS11模拟器介绍一
    兼容IE getElementsByClassName取标签
  • 原文地址:https://www.cnblogs.com/xlfy/p/13256418.html
Copyright © 2011-2022 走看看