• 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
    
  • 相关阅读:
    问题堆栈区39+40
    ListView优化分页优化
    AsyncTask理解- Day36or37
    Activity是如何挂载Pargment的Day35
    BroadcastReceiver和Intetnt的理解 Day34
    深入理解自定义ListView
    手势识别=读取手机联系人=ContentResolver-Day3
    Android本地JUnit Text
    Java——(一)一切都是对象
    SciTE: 中文字符支持问题
  • 原文地址:https://www.cnblogs.com/rong-z/p/15209554.html
Copyright © 2020-2023  润新知