zoukankan      html  css  js  c++  java
  • python读取Excel指定单元格的值

    使用openpyxl实现

    只支持xlsx文件,不支持xls

    import openpyxl
    
    
    def read_cell(io, sheet, cell='A2'):
        """
        读取单元格
        :param io: Excel文件路径
        :param sheet: 读取哪一张表,str, int   eg: 'Sheet1' or 0
        :param cell: 读取哪一个单元格
        :return: value --> str
        """
        excel = openpyxl.load_workbook(io)
        if isinstance(sheet, str):
            ws = excel[sheet]
        elif isinstance(sheet, int):
            name = excel.sheetnames[sheet]
            ws = excel[name]
        else:
            raise TypeError('sheet must be int or str, not %s' % type(sheet))
        val = ws[cell].value
        if not val:
            val = ""
        return val
    

    使用xlrd实现

    只支持xls(version > 2.x),既支持xls又支持xlsx(version < 2.x)

    import xlrd
    
    
    def get_index(capital):
        """
        大写字母(Excel列头)转数字
        :param capital: 'A' --> 0, 'AA' --> 26
        :return: int
        """
        number = 0
        capital = capital.upper()
        for char in capital:
            number = number * 26 + ord(char) - ord('A') + 1
        return number - 1
    
    
    def read_cell(io, sheet, cell='A1'):
        """
        读取单元格
        :param io: Excel文件路径
        :param sheet: 读取哪一张表,str, int   eg: 'Sheet1' or 0
        :param cell: 读取哪一个单元格
        :return: value --> str
        """
        wb = xlrd.open_workbook(io)
        if isinstance(sheet, str):
            ws = wb.sheet_by_name(sheet)
        elif isinstance(sheet, int):
            ws = wb.sheet_by_index(sheet)
        position = re.findall(r'[0-9]+|[A-Z]+', cell)
        pos_col = position[0]
        pos_row = int(position[1])
        col_index = get_index(pos_col)
        values = ws.col_values(col_index, start_rowx=pos_row - 1, end_rowx=pos_row)
        if values:
            val = values[0]
        else:
            val = ''
        return val
    
    博主箴言:该博文中的文字内容仅供参考学习,如有不当之处还望各位不吝赐教,为博主指点一二,不胜感激:▄︻┻┳═一…… ☆(>○<)
  • 相关阅读:
    容器适配器————priority_queue
    容器适配器————queue
    容器适配器之总结
    序列式容器之总结
    序列式容器————forward_list
    序列式容器————list
    序列式容器————dequeue
    13.软件项目管理与敏捷方法——如何变更职责笔记
    10.软件项目管理与敏捷方法——沟通管理笔记
    09.软件项目管理与敏捷方法——人力资源管理笔记
  • 原文地址:https://www.cnblogs.com/rongge95500/p/15209554.html
Copyright © 2011-2022 走看看