python中使用xlrd模块读取excel文件

本文介绍了Python中使用xlrd模块读取Excel文件的方法,包括xlrd的基本概念和安装步骤,并提供了详细的操作代码及运行结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、xlrd是什么?


Python语言中,读取Excel的扩展工具。


二、使用步骤


1.安装xlrd模块

方法一:pip指定安装1.2.0版本(高版本会无法读取xlsx文件):

pip install xlrd==1.2.0

方法二:pycharm里搜索xlrd模块安装:
在这里插入图片描述

2.读取excel文件

表格内容如下:
在这里插入图片描述
代码内容如下(已将代码封装好):

# 读取excel
class ReadExcel:
    # 传入excel路径和sheet名称
    def __init__(self, file_path, sheet_name):
        self.file_path = file_path
        self.sheet_name = sheet_name
        self.sheet = self.get_sheet()

    # 根据sheet名称获取表格对象
    def get_sheet(self):
        wb = xlrd.open_workbook(self.file_path)
        sheet = wb.sheet_by_name(self.sheet_name)
        return sheet

    # 根据行列获取单元格数据
    def __get_cell_value(self, rows, cols):
        cell_value = self.sheet.cell_value(rows, cols)
        return cell_value

    # 获取excel行
    def get_rows(self):
        rows = self.sheet.nrows
        return rows

    # 获取excel列
    def get_cols(self):
        cols = self.sheet.ncols
        return cols

    # 获取合并单元格的值,返回合并单元格的起始行,结束行,起始列,结束列
    def get_merged_info(self):
        merged_info = self.sheet.merged_cells
        return merged_info

    # 获取excel数据(处理了合并和未合并单元格的所有数据)
    def get_merged_cell_value(self, row_index, col_index):
        # 如果没有合并的单元格,则正常据行列获取单元格数据
        if not self.get_merged_info():
            cell_value = self.__get_cell_value(row_index, col_index)
        # 否则遍历获取到的合并单元格的数据来取数据
        else:
            # 遍历合并单元格的数据
            for (r_low, r_high, c_low, c_high) in self.get_merged_info():
                # 如果传进来的行列处于合并单元格中
                if r_low <= row_index < r_high and c_low <= col_index < c_high:
                    # 就取合并单元格中的数据
                    cell_value = self.__get_cell_value(r_low, c_low)
                    break
            # 否则根据传进来的行列取数据
            else:
                cell_value = self.__get_cell_value(row_index, col_index)
        return cell_value

    # 将数据转化为字典
    def get_sheet_data_by_dict(self):
        all_data_list = []
        first_row = self.sheet.row(0)
        for row in range(1, self.get_rows()):
            row_dict = {}
            for col in range(0, self.get_cols()):
                row_dict[first_row[col].value] = self.get_merged_cell_value(row, col)
            all_data_list.append(row_dict)
        return all_data_list


if __name__ == '__main__':
    excel_path = os.path.join(os.path.dirname(__file__), '../data/user.xlsx')
    excel = ReadExcel(excel_path, 'register')
    print(excel.get_merged_info())
    print(excel.get_merged_cell_value(1, 5))

代码运行结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值