千家信息网

python如何使用xlrd模块读取excel

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了python如何使用xlrd模块读取excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、安装xlrd模块:1
千家信息网最后更新 2026年11月01日python如何使用xlrd模块读取excel

这篇文章主要介绍了python如何使用xlrd模块读取excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

    一、安装xlrd模块:

    1、mac下打开终端输入命令:

    pip install xlrd

    2、验证安装是否成功:

    • 在mac终端输入 python 进入python环境

    • 然后输入 import xlrd

    不报错说明模块安装成功

    二、常用方法:

    1、导入模块:

    import xlrd

    2、打开文件:

    x1 = xlrd.open_workbook("data.xlsx")

    3、获取sheet:

    • 获取所有sheet名字:x1.sheet_names()

    • 获取sheet数量:x1.nsheets

    • 获取所有sheet对象:x1.sheets()

    • 通过sheet名查找:x1.sheet_by_name("test")

    • 通过索引查找:x1.sheet_by_index(3)

    # -*- coding:utf-8 -*-import xlrdimport osfilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)print filePath# 1、打开文件x1 = xlrd.open_workbook(filePath)# 2、获取sheet对象print 'sheet_names:', x1.sheet_names()  # 获取所有sheet名字print 'sheet_number:', x1.nsheets        # 获取sheet数量print 'sheet_object:', x1.sheets()       # 获取所有sheet对象print 'By_name:', x1.sheet_by_name("test")  # 通过sheet名查找print 'By_index:', x1.sheet_by_index(3)  # 通过索引查找

    输出:

    sheet_names: [u' plan', u'team building', u'modile', u'test']sheet_number: 4sheet_object: [, , , ]By_name: By_index: 

    4、获取sheet的汇总数据:

    • 获取sheet名:sheet1.name

    • 获取总行数:sheet1.nrows

    • 获取总列数:sheet1.ncols

    # -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)print filePath# 打开文件x1 = xlrd.open_workbook(filePath)# 获取sheet的汇总数据sheet1 = x1.sheet_by_name("plan")print "sheet name:", sheet1.name   # get sheet nameprint "row num:", sheet1.nrows  # get sheet all rows numberprint "col num:", sheet1.ncols  # get sheet all columns number

    输出:

    sheet name: planrow num: 31col num: 11

    5、单元格批量读取:

    a)行操作:

    • sheet1.row_values(0) # 获取第一行所有内容,合并单元格,首行显示值,其它为空。

    • sheet1.row(0)   # 获取单元格值类型和内容

    • sheet1.row_types(0) # 获取单元格数据类型

    # -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# 单元格批量读取print sheet1.row_values(0)  # 获取第一行所有内容,合并单元格,首行显示值,其它为空。print sheet1.row(0)         # 获取单元格值类型和内容print sheet1.row_types(0)   # 获取单元格数据类型

    输出:

    [u'learning plan', u'', u'', u'', u'', u'', u'', u'', 123.0, 42916.0, 0][text:u'learning plan', empty:u'', empty:u'', empty:u'', empty:u'', empty:u'', empty:u'', empty:u'', number:123.0, xldate:42916.0, bool:0]array('B', [1, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4])

    b) 表操作

    • sheet1.row_values(0, 6, 10) # 取第1行,第6~10列(不含第10表)

    • sheet1.col_values(0, 0, 5) # 取第1列,第0~5行(不含第5行)

    • sheet1.row_slice(2, 0, 2) # 获取单元格值类型和内容

    • sheet1.row_types(1, 0, 2) # 获取单元格数据类型

    # -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)print filePath# 1、打开文件x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# 列操作print sheet1.row_values(0, 6, 10)   # 取第1行,第6~10列(不含第10表)print sheet1.col_values(0, 0, 5)    # 取第1列,第0~5行(不含第5行)print sheet1.row_slice(2, 0, 2)     # 获取单元格值类型和内容,同sheet1.row(0)print sheet1.row_types(1, 0, 2)     # 获取单元格数据类型

    输出:

    [u'', u'', 123.0, 42916.0][u'learning plan', u'\u7f16\u53f7', 1.0, 2.0, 3.0][number:1.0, text:u'\u7ba1\u7406\u5b66\u4e60']array('B', [1, 1])

    6、特定单元格读取:

    a) 获取单元格值:

    • sheet1.cell_value(1, 2)

    • sheet1.cell(1, 2).value

    • sheet1.row(1)[2].value

    b) 获取单元格类型:

    • sheet1.cell(1, 2).ctype

    • sheet1.cell_type(1, 2)

    • sheet1.row(1)[2].ctype

    # -*- coding:utf-8 -*-import xlrdimport osfrom datetime import date,datetimefilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# 特定单元格读取# 取值print sheet1.cell_value(1, 2)print sheet1.cell(1, 2).valueprint sheet1.row(1)[2].value#取类型print sheet1.cell(1, 2).ctypeprint sheet1.cell_type(1, 2)print sheet1.row(1)[2].ctype

    7、(0,0)转换A1:

    • xlrd.cellname(0, 0) # (0,0)转换成A1

    • xlrd.cellnameabs(0, 0) # (0,0)转换成$A$1

    • xlrd.colname(30) # 把列由数字转换为字母表示

    # -*- coding:utf-8 -*-import xlrdimport osfilename = "demo.xlsx"filePath = os.path.join(os.getcwd(), filename)# 打开文件x1 = xlrd.open_workbook(filePath)sheet1 = x1.sheet_by_name("plan")# (0,0)转换成A1print xlrd.cellname(0, 0)   # (0,0)转换成A1print xlrd.cellnameabs(0, 0) # (0,0)转换成$A$1print xlrd.colname(30)  # 把列由数字转换为字母表示

    输出:

    A1$A$1AE

    8、数据类型:

    • 空:0

    • 字符串:1

    • 数字:2

    • 日期:3

    • 布尔:4

    • error:5

    附:写一个自动获取excel表内容的类

    本代码已实现自动转换单元格数据类型,不会发生整形数字以浮点数显示,布尔型True或False显示为1,0;日期时间显示为一连串的小数问题

    import xlrdfrom xlrd import xldate_as_tupleimport datetime'''xlrd中单元格的数据类型数字一律按浮点型输出,日期输出成一串小数,布尔型输出0或1,所以我们必须在程序中做判断处理转换成我们想要的数据类型0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error'''class ExcelData():    # 初始化方法    def __init__(self, data_path, sheetname):        #定义一个属性接收文件路径        self.data_path = data_path        # 定义一个属性接收工作表名称        self.sheetname = sheetname        # 使用xlrd模块打开excel表读取数据        self.data = xlrd.open_workbook(self.data_path)        # 根据工作表的名称获取工作表中的内容(方式①)        self.table = self.data.sheet_by_name(self.sheetname)        # 根据工作表的索引获取工作表的内容(方式②)        # self.table = self.data.sheet_by_name(0)        # 获取第一行所有内容,如果括号中1就是第二行,这点跟列表索引类似        self.keys = self.table.row_values(0)        # 获取工作表的有效行数        self.rowNum = self.table.nrows        # 获取工作表的有效列数        self.colNum = self.table.ncols    # 定义一个读取excel表的方法    def readExcel(self):        # 定义一个空列表        datas = []        for i in range(1, self.rowNum):            # 定义一个空字典            sheet_data = {}            for j in range(self.colNum):                # 获取单元格数据类型                c_type = self.table.cell(i,j).ctype                # 获取单元格数据                c_cell = self.table.cell_value(i, j)                if c_type == 2 and c_cell % 1 == 0:  # 如果是整形                    c_cell = int(c_cell)                elif c_type == 3:                    # 转成datetime对象                    date = datetime.datetime(*xldate_as_tuple(c_cell,0))                    c_cell = date.strftime('%Y/%d/%m %H:%M:%S')                elif c_type == 4:                    c_cell = True if c_cell == 1 else False                sheet_data[self.keys[j]] = c_cell                # 循环每一个有效的单元格,将字段与值对应存储到字典中                # 字典的key就是excel表中每列第一行的字段                # sheet_data[self.keys[j]] = self.table.row_values(i)[j]            # 再将字典追加到列表中            datas.append(sheet_data)        # 返回从excel中获取到的数据:以列表存字典的形式返回        return datasif __name__ == "__main__":    data_path = "ttt.xlsx"    sheetname = "Sheet1"    get_data = ExcelData(data_path, sheetname)    datas = get_data.readExcel()    print(datas)

    感谢你能够认真阅读完这篇文章,希望小编分享的"python如何使用xlrd模块读取excel"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

    单元 类型 数据 内容 输出 工作 模块 文件 utf-8 字典 数字 格值 一行 含第 对象 篇文章 索引 有效 布尔 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网通讯科技 互联网是不是新科技 科技互联网技术 互联网科技与金融科技 互联网金融公司科技 青岛互联网科技公司 亿账通互联网科技 唐信互联网科技 大连 广州善班互联网科技 郑州华宇互联网科技 互联网科技宣传片 互联网金融和金融科技 佰商互联网科技有限公司 华中科技有哪些互联网大佬 成都玖崟互联网科技有限公司乐商圈怎么样 元气玛特互联网科技公司是外包吗 抖集互联网科技技术咨询 广州三三互联网科技有限公司 陕西彩京云互联网科技有限公司 株洲百竞科技的互联网营销顾问 齐家互联网科技有限公司 衡水科技产业互联网平台 恒银科技与互联网金融 互联网时代科技改变生活 浙江互联网科技研学营 互联网时代的科技公司 电子商务与互联网科技的关系 互联网科技快讯热点 青岛易易互联网科技 河南商务圈互联网科技有限公司
    0