精华内容
下载资源
问答
  • 主要介绍了Python使用xlrd模块操作Excel数据导入方法,涉及Python操作xlrd模块的技巧,需要朋友可以参考下
  • 主要介绍了python使用xlrd模块读写Excel文件方法,较为详细分析了xlrd模块的安装、使用与操作Excel文件相关技巧,需要朋友可以参考下
  • Pythonxlrd模块使用

    千次阅读 2019-10-30 16:14:32
    2、xlrd和xlwt两个模块分别用来读Excel和写Excel,只支持.xls和.xlsx格式,xlutils模块可以同时读写一个已存在Excel文件,依赖于xlrd和xlwt。 3、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生...

    python处理Excel
    相关说明:
    1、Python自带的csv模块可以处理.csv文件。

    2、xlrd和xlwt两个模块分别用来读Excel和写Excel,只支持.xls和.xlsx格式,xlutils模块可以同时读写一个已存在的Excel文件,依赖于xlrd和xlwt。

    3、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007以前的版本为xls结尾的文件,需要使用xlrd(读)和xlwt(写)库进行操作

    4、excel表的文字编码如果是“gb2312” 读取后就会显示乱码,请先转成Unicode

    5、workbook: 工作簿,一个excel文件包含多个sheet。

    6、sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。

    7、cell: 单元格,存储数据对象

    8、常用单元格中的数据类型empty(空的),string(text),number, date, boolean, error,blank(空白表格)


    使用xlrd读Excel
    xlrd提供的接口比较多,常用的方法如下:

    方法          说明
    open_workbook()    
     打开指定的Excel文件,返回一个Book对象:通过Book对象可以得到各个Sheet对象(一个Excel文件可以有多个Sheet,每个Sheet就是一张表格)

    Book.nsheets        返回Sheet的数目
    Book.sheets()    返回所有Sheet对象的list
    Book.sheet_by_index(index)      返回指定索引处的Sheet。相当于Book.sheets()[index]
    Book.sheet_names()     返回所有Sheet对象名字的list(为一个str类型的列表)
    Book.sheet_by_name(name)    根据指定Sheet对象名字返回She
    通过Sheet对象可以获取各个单元格,每个单元格是一个Cell对象

    方法    说明
    Sheet.name      返回表格的名称
    Sheet.nrows     返回表格的行数
    Sheet.ncols        返回表格的列数
    Sheet.row(r)     获取指定行,返回Cell对象的list
    Sheet.col(c)     获取指定列,返回Cell对象的list
    Sheet.row_values(r)      获取指定行的值,返回list
    Sheet.col_values(c)     获取指定列的值,返回list
    Sheet.cell(r, c)      根据位置获取Cell对象
    Sheet.cell_value(r, c)     根据位置获取Cell对象的值
    Cell.value    返回单元格的值
    注:
    总的来说在处理Excel时的步骤是:先获取需要处理的Excel文件对象(Book对象,open_workbook()),再获得工作簿中的sheet对象(Book.sheet_by_index(index)等方法),在sheet对象中进行处理

     

    此次的测试Excel文件

     

    获取工作表对象
    我们知道一个工作簿里面可以含有多个工作表,当我们获取“工作簿对象”后,可以接着来获取工作表对象,可以通过“索引”的方式获得,也可以通过“表名”的方式获得。

    例1:
    通过Book.sheets( )方法获得sheet对象

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
     
    #返回所有Sheet对象的list
    all_sheet = excel.sheets()#Book(工作簿)对象方法
    print(all_sheet)
     
    #遍历返回的Sheet对象的list
    for each_sheet in all_sheet:
        print(each_sheet)
        print("sheet名称为:",each_sheet.name)#sheet对象方法
     
    """
    [<xlrd.sheet.Sheet object at 0x0000021983B380F0>, <xlrd.sheet.Sheet object at 0x0000021983B38208>, <xlrd.sheet.Sheet object at 0x0000021983B382B0>]
    <xlrd.sheet.Sheet object at 0x0000021983B380F0>
    sheet名称为: Sheet1
    <xlrd.sheet.Sheet object at 0x0000021983B38208>
    sheet名称为: Sheet2
    <xlrd.sheet.Sheet object at 0x0000021983B382B0>
    sheet名称为: Sheet3
    """
    例1_1:
    通过Book.sheet_by_index(index)方法获得sheet对象

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
     
    #返回所有Sheet对象的list
    all_sheet = excel.sheets()
    print(all_sheet)
     
    for i in range(len(all_sheet)):
        each_sheet_by_index = excel.sheet_by_index(i)#通过sheet索引获得sheet对象
        print("表名称为:{0},类型为:{1}".format(each_sheet_by_index, type(each_sheet_by_index)))
        print("sheet名称为:", each_sheet_by_index.name)  # sheet对象方法
     
     
    """
    [<xlrd.sheet.Sheet object at 0x0000023D55D89128>, <xlrd.sheet.Sheet object at 0x0000023D55D89240>, <xlrd.sheet.Sheet object at 0x0000023D55D892E8>]
    表名称为:<xlrd.sheet.Sheet object at 0x0000023D55D89128>,类型为:<class 'xlrd.sheet.Sheet'>
    sheet名称为: Sheet1
    表名称为:<xlrd.sheet.Sheet object at 0x0000023D55D89240>,类型为:<class 'xlrd.sheet.Sheet'>
    sheet名称为: Sheet2
    表名称为:<xlrd.sheet.Sheet object at 0x0000023D55D892E8>,类型为:<class 'xlrd.sheet.Sheet'>
    sheet名称为: Sheet3
    """
    注:从上面的代码可以看出,这种用法(excel.sheet_by_index(i))其实就是Book.sheets()[index]相同,只是说例1中的用法比较简便

    例1_2:
    Book.sheet_names() :这种获得的不是sheet对象,只是一个str类型的列表(sheet对象名字的列表)

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
     
    #返回所有Sheet对象名字的list
    all_sheet = excel.sheet_names()
    print(all_sheet)
     
    #遍历返回的Sheet对象名字的list
    for each_sheet_by_name in all_sheet:
        print("表名称为:{0},类型为:{1}".format(each_sheet_by_name ,type(each_sheet_by_name )))
        #print(each_sheet_by_name.ncols)
        
    """
    ['Sheet1', 'Sheet2', 'Sheet3']
    表名称为:Sheet1,类型为:<class 'str'>
    表名称为:Sheet2,类型为:<class 'str'>
    表名称为:Sheet3,类型为:<class 'str'>
    """
    注:
    从上面例子中可以看出遍历出来的只是一个字符串类型的对象('Sheet1', 'Sheet2', 'Sheet3'),而不是sheet对象,因此不能使用seet对象方法(Sheet.name等)

    例1_2:
    通过表名称索引来获得:Book.sheet_by_name(name)

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
     
    #返回所有Sheet对象名字的list
    all_sheet = excel.sheet_names()
    #workbook.sheet_names() 返回一个list对象,可以对这个list对象进行操作
    print(all_sheet)
     
    for i in all_sheet:
        each_sheet_by_name = excel.sheet_by_name(i)#通过sheet索引获得sheet对象
        print("表名称为:{0},类型为:{1}".format(each_sheet_by_name, type(each_sheet_by_name)))
        print("sheet名称为:", each_sheet_by_name.name)  # sheet对象方法
     
    """
    ['Sheet1', 'Sheet2', 'Sheet3']
    表名称为:<xlrd.sheet.Sheet object at 0x00000202BF748080>,类型为:<class 'xlrd.sheet.Sheet'>
    sheet名称为: Sheet1
    表名称为:<xlrd.sheet.Sheet object at 0x00000202BF748198>,类型为:<class 'xlrd.sheet.Sheet'>
    sheet名称为: Sheet2
    表名称为:<xlrd.sheet.Sheet object at 0x00000202BF748240>,类型为:<class 'xlrd.sheet.Sheet'>
    sheet名称为: Sheet3
    """
    例1_4:
    除了以上方法,还有一种获得sheet对象的方法

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #返回Sheet的数目
    all_sheet_count = excel.nsheets
    print(all_sheet_count)
     
    for i in range(all_sheet_count):
        sheet = excel.sheet_by_index(i)#通过索引sheet数目来获得,与第二种方法类似
        print("表名称为:{0},类型为:{1}".format(sheet , type(sheet )))
     
    """
    3
    表名称为:<xlrd.sheet.Sheet object at 0x000001EA57F39048>,类型为:<class 'xlrd.sheet.Sheet'>
    表名称为:<xlrd.sheet.Sheet object at 0x000001EA57F39160>,类型为:<class 'xlrd.sheet.Sheet'>
    表名称为:<xlrd.sheet.Sheet object at 0x000001EA57F39208>,类型为:<class 'xlrd.sheet.Sheet'>
    """
     

    获取工作表的基本信息
    在获得“表对象”之后,我们可以获取关于工作表的基本信息。包括表名、行数与列数等
    例2:获取sheet对象的名称、行数、列数

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #获取sheet对象
    all_sheet = excel.sheets()
     
    #循环遍历每个sheet对象
    sheet_name = []
    sheet_row = []
    sheet_col = []
    for sheet in all_sheet:
        sheet_name.append(sheet.name)
        print("该Excel共有{0}个sheet,当前sheet名称为{1},该sheet共有{2}行,{3}列"
              .format(len(all_sheet),sheet.name,sheet.nrows,sheet.ncols))
        sheet_row.append(sheet.nrows)
        sheet_col.append(sheet.ncols)
     
    print(sheet_name)#获取sheet的名称
    print(sheet_row )#获取sheet对象的行数
    print(sheet_col)#获取sheet对象的列数
     
    """
    该Excel共有3个sheet,当前sheet名称为Sheet1,该sheet共有13行,9列
    该Excel共有3个sheet,当前sheet名称为Sheet2,该sheet共有9行,10列
    该Excel共有3个sheet,当前sheet名称为Sheet3,该sheet共有18行,8列
    ['Sheet1', 'Sheet2', 'Sheet3']
    [13, 9, 18]
    [9, 10, 8]
    """

    例3:按行或列方式获得工作表的数据

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #获取sheet对象
    all_sheet = excel.sheets()
     
    #循环遍历每个sheet对象
    sheet_name = []
    sheet_row = []
    sheet_col = []
    for sheet in all_sheet:
        sheet_name.append(sheet.name)
        print("该Excel共有{0}个sheet,当前sheet名称为{1},该sheet共有{2}行,{3}列"
              .format(len(all_sheet),sheet.name,sheet.nrows,sheet.ncols))
        for each_row in range(sheet.nrows):#循环打印每一行
            print("当前为%s行:"% each_row,type(each_row))
            print(sheet.row_values(each_row),type(sheet.row_values(each_row)))
     
    first_row_value = sheet.row_values(0)#打印指定的某一行
    print("第一行的数据为:%s" % first_row_value)
     
    """
    该Excel共有3个sheet,当前sheet名称为小于一比八的职位,该sheet共有4行,6列
    当前为0行: <class 'int'>
    ['地区', '单位名称', '职位代码', '职位名称', '招录人数', '报考人数'] <class 'list'>
    当前为1行: <class 'int'>
    ['省级单位', '浙江警官职业学院', '13312004000000001', '司法警务专业教学', 1.0, '0'] <class 'list'>
    当前为2行: <class 'int'>
    ['省级单位', '浙江警官职业学院', '13312004000000002', '法学教学', 1.0, '1'] <class 'list'>
    当前为3行: <class 'int'>
    .......
    第一行的数据为:['地区', '单位名称', '职位代码', '职位名称', '招录人数', '报考人数']
    """
    注:
    1、从上面例子中可以看出,在获得sheet对象的行数后,可以使用循环遍历的方法(for each_row in range(sheet.nrows),再通过sheet.row_values(each_row)方法获得出每一行的数据

    2、可以通过索引的方法可以获得指定的某一行的数据的(sheet.row_values(0)):其实这种跟上面1中的实际上是一致的

    3、通过输出的结果可以看出:获得的每一行的数据类型为一个列表,每一个单元格的数据为列表中的一个元素,一行中的所有数据组成一个列表
     

    例3_1:

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #获取sheet对象
    all_sheet = excel.sheets()
     
    #循环遍历每个sheet对象
    sheet_name = []
    sheet_row = []
    sheet_col = []
    for sheet in all_sheet:
        sheet_name.append(sheet.name)
        print("该Excel共有{0}个sheet,当前sheet名称为{1},该sheet共有{2}行,{3}列"
              .format(len(all_sheet),sheet.name,sheet.nrows,sheet.ncols))
     
        print(sheet.col_values(0))#获取指定列的数据
     
        for each_col in range(sheet.ncols):#依次获得每一列的数据
            print("当前为%s列:"% each_col )
     
            print(sheet.col_values(each_col ),type(sheet.col_values(each_col )))
     
    """
    该Excel共有3个sheet,当前sheet名称为小于一比八的职位,该sheet共有4行,6列
    ['地区', '省级单位', '省级单位', '省级单位']
    当前为0列:
    ['地区', '省级单位', '省级单位', '省级单位'] <class 'list'>
    当前为1列:
    ['单位名称', '浙江警官职业学院', '浙江警官职业学院', '浙江警官职业学院'] <class 'list'>
    当前为2列:
    ['职位代码', '13312004000000001', '13312004000000002', '13312004000000003'] <class 'list'>
    当前为3列:
    ['职位名称', '司法警务专业教学', '法学教学', '民航空中安保教学'] <class 'list'>
    当前为4列:
    .....
    """
    注:
    1、从上面的例子可以看出:可以通过遍历全部列数(for each_col in range(sheet.ncols))的方法获得全部列的数据,也可以通过索引获得指定列的数据

    2、返回的数据依旧是列表:一列中每个单元格的数据为列表中的一个元素

     

    获取行或列对象
    通过sheet对象中的Sheet.row(r)或Sheet.col(c)可以获得指定行或列,返回Cell对象的list
    例4:

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #获取sheet对象
    all_sheet = excel.sheets()
     
    #循环遍历每个sheet对象
    for sheet in all_sheet:
        print("该Excel共有{0}个sheet,当前sheet名称为{1},该sheet共有{2}行,{3}列"
              .format(len(all_sheet),sheet.name,sheet.nrows,sheet.ncols))
        sheet_cell_first_row = sheet.row(0)#获取指定行对象
        print(sheet_cell_first_row)
        for i in range(sheet.nrows):#依次遍历获得每一行对象
            each_cell_value_row = sheet.row(i)
            print(each_cell_value_row,type(each_cell_value_row))
     
    """
    该Excel共有3个sheet,当前sheet名称为小于一比八的职位,该sheet共有4行,6列
    [text:'地区', text:'单位名称', text:'职位代码', text:'职位名称', text:'招录人数', text:'报考人数']
    [text:'地区', text:'单位名称', text:'职位代码', text:'职位名称', text:'招录人数', text:'报考人数'] <class 'list'>
    [text:'省级单位', text:'浙江警官职业学院', text:'13312004000000001', text:'司法警务专业教学', number:1.0, text:'0'] <class 'list'>
    [text:'省级单位', text:'浙江警官职业学院', text:'13312004000000002', text:'法学教学', number:1.0, text:'1'] <class 'list'>
    [text:'省级单位', text:'浙江警官职业学院', text:'13312004000000003', text:'民航空中安保教学', number:1.0, text:'1'] <class 'list'>
    该Excel共有3个sheet,当前sheet名称为大于一比八十的职位,该sheet共有11行,6列
    """
    注:
    从上面的输出结果可以看出:返回的结果的类型为一个嵌套了字典的列表,字典的键为默认值(test),字典的值为每个单元格的值(数据)

    例4_1:

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #获取sheet对象
    all_sheet = excel.sheets()
     
    #循环遍历每个sheet对象
    for sheet in all_sheet:
        print("该Excel共有{0}个sheet,当前sheet名称为{1},该sheet共有{2}行,{3}列"
              .format(len(all_sheet),sheet.name,sheet.nrows,sheet.ncols))
        sheet_cell_first_col = sheet.col(0)#获取指定列对象
        print(sheet_cell_first_col)
        for i in range(sheet.ncols):#依次遍历获得每一列对象
            each_cell_value_col = sheet.col(i)
            print(each_cell_value_col,type(each_cell_value_col))
     
    """
    该Excel共有3个sheet,当前sheet名称为小于一比八的职位,该sheet共有4行,6列
    [text:'地区', text:'省级单位', text:'省级单位', text:'省级单位']
    [text:'地区', text:'省级单位', text:'省级单位', text:'省级单位'] <class 'list'>
    [text:'单位名称', text:'浙江警官职业学院', text:'浙江警官职业学院', text:'浙江警官职业学院'] <class 'list'>
    [text:'职位代码', text:'13312004000000001', text:'13312004000000002', text:'13312004000000003'] <class 'list'>
    [text:'职位名称', text:'司法警务专业教学', text:'法学教学', text:'民航空中安保教学'] <class 'list'>
    [text:'招录人数', number:1.0, number:1.0, number:1.0] <class 'list'>
    [text:'报考人数', text:'0', text:'1', text:'1'] <class 'list'>
    该Excel共有3个sheet,当前sheet名称为大于一比八十的职位,该sheet共有11行,6列
    """
     

    获取某一个单元格的数据
    1、我们还可以将查询精确地定位到某一个单元格。在xlrd模块中,工作表的行和列都是从0开始计数的

    2、单元格:单元格是表格中行与列的交叉部分,它是组成表格的最小单位,可拆分或者合并。单个数据的输入和修改都是在单元格中进行的
    例5:

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #获取sheet对象
    all_sheet = excel.sheets()
     
    #循环遍历每个sheet对象
    for sheet in all_sheet:
        print("该Excel共有{0}个sheet,当前sheet名称为{1},该sheet共有{2}行,{3}列"
          .format(len(all_sheet),sheet.name,sheet.nrows,sheet.ncols))
        sheet_cell = sheet.cell(0,0)#根据位置获取Cell对象
        print(sheet_cell)
        sheet_cell_value = sheet_cell.value#返回单元格的值
        print(sheet_cell_value)
     
        sheet_cell_value_1 = sheet.cell_value(0,0)#根据位置获取Cell对象的值
        print(sheet_cell_value_1)
    """
    该Excel共有3个sheet,当前sheet名称为小于一比八的职位,该sheet共有4行,6列
    text:'地区'
    地区
    地区
    该Excel共有3个sheet,当前sheet名称为大于一比八十的职位,该sheet共有11行,6列
    text:'地区'
    地区
    地区
    该Excel共有3个sheet,当前sheet名称为Sheet1,该sheet共有22行,6列
    text:'地区'
    地区
    地区
    """
     

    拓展:
    获取每一个单元格的值(数据)
    例6:

    import xlrd
     
    excel_path = "F:\\Excel_demo\\demo.xls"
     
    #打开文件,获取excel文件的workbook(工作簿)对象
    excel = xlrd.open_workbook(excel_path,encoding_override="utf-8")
     
    #获取sheet对象
    sheet = excel.sheets()[0]
     
    sheet_row_mount = sheet.nrows#4行
    sheet_col_mount = sheet.ncols#6列
     
    print(sheet_row_mount,sheet_col_mount)
     
    for x in range(sheet_row_mount):#4
        y = 0
        while y < sheet_col_mount:#6
            print(sheet.cell_value(x,y))
            y += 1
     
    """
    4 6
    地区
    单位名称
    职位代码
    职位名称
    招录人数
    报考人数
    省级单位
    浙江警官职业学院
    13312004000000001
    司法警务专业教学
    1.0
    0
    省级单位
    ......
    """
    注:
    Excel文件中行和列的索引是从0开始的(且文件返回的是一个列表),所以如果上面例子中判断条件为while y <= sheet_col_mount时就会报错 :IndexError: list index out of range
     

    展开全文
  • 主要介绍了Python基于xlrd模块操作Excel方法,结合实例形式分析了xlrd模块的安装及Python使用xlrd模块模块进行Excel读写相关操作技巧,需要朋友可以参考下
  • Python安装xlrd模块导入使用

    千次阅读 2017-08-25 11:44:04
    在日常工作中,会经常用到Python读取excel,在用Python读取excel之前必须要安装xlrd模块才能使Python能够读取excel的数据,下面介绍的是Python的xlrd模块的安装 1.你要先安装Python,可以到官网下载...

    Python安装xlrd模块导入使用

     
    在日常工作中,会经常用到Python读取excel,在用Python读取excel之前必须要安装xlrd模块才能使Python能够读取excel的数据,下面介绍的是Python的xlrd模块的安装
    • 1.你要先安装Python,可以到官网下载https://www.python.org/downloads/(会有两种版本的Python提供你下载,按照自己的需要选择一个版本进行下载,本人用的是3.4.3版,2.X版本的个人安装无法读取excel文档),安装没什么可说的,和一般的软件安装没什么区别;

    • 2.下载一个ez_setup.py的文件https://pypi.python.org/pypi/setuptools,用来安装easy_install的;在Installation Instructions中右键ez_setup保存到自己的电脑就行了,并复制文件到Python的安装目录下D:\Python34(注意一定要在Python的安装目录下,因为下一步会自动下载一个文件夹到这目录下才能正常使用);

    • 3.运行cmd,把路径切换到Python的安装目录(输入d: 回车,再输入cd Python 回车),然后
    • 再输入ez_setup.py 回车(如果弹出打开方式的对话框,选择Python打开就可以了),这时,会自动下载一个文件夹到Python的目录下,等提示finish即可关闭cmd;

    • 4.编辑环境变量,把Python的路径D:\Python34和easy_install的路径D:\Python34\Scripts添加到path的变量值中去;

    • 5.运行cmd,输入easy_install xlrd,等待片刻,xlrd模块就安装完成了,在Python中输入import xlrd 回车,没提示错误,就表示安装成功了!
    (在完成了前四步的基础上,也可以安装Python的其他模块,只要在第五步输入easy_install "模块名"就可以了)
    展开全文
  • Pythonxlrd模块是用来读取excel文件 2.安装 安装 xlrd 模块 pip install xlrd 3.可以对文件进行操作 获取文件中表格名 读取有效单元格行数、列数 读取指定行(列)所有单元格值 读取指定单元格值...

    1.简介
    在Python中 xlrd模块是用来读取excel文件的

    2.安装
    安装 xlrd 模块 pip install xlrd

    3.可以对文件进行的操作
    获取文件中的表格名
    读取有效单元格的行数、列数
    读取指定行(列)的所有单元格的值
    读取指定单元格的值
    读取指定单元格的数据类型

    4.常用函数
    4.1打开文件

    data = xlrd.open_workbook(filename)
    #filename表示要打开的文件名以及路径,如果路径或者文件名有中文给前面加一个r表示原生字符。
    

    4.2获取文件中的工作表

    table = data.sheets()[0]          #通过索引顺序获取
    table = data.sheet_by_index(sheet_indx)) #通过索引顺序获取
    table = data.sheet_by_name(sheet_name)#通过名称获取
    以上三个函数都会返回一个xlrd.sheet.Sheet()对象
    
    names = data.sheet_names()    #返回book中所有工作表的名字
    data.sheet_loaded(sheet_name or indx)   # 检查某个sheet是否导入完毕
    

    4.3对行进行操作

    nrows = table.nrows  #获取该sheet中的有效行数
    table.row(rowx=1)  #返回由该行中所有的单元格对象组成的列表
    table.row_slice(rowx=1)  #返回由该列中所有的单元格对象组成的列表
    table.row_types(rowx=1, start_colx=0, end_colx=None)    #返回由该行中所有单元格的数据类型组成的列表
    table.row_values(rowx=1, start_colx=0, end_colx=None)   #返回由该行中所有单元格的数据组成的列表
    table.row_len(rowx=1) #返回该列的有效单元格长度
    

    4.4对列进行操作

    ncols = table.ncols   #获取列表的有效列数
    table.col(colx=1, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表
    table.col_slice(colx=1, start_rowx=0, end_rowx=None)  #返回由该列中所有的单元格对象组成的列表
    table.col_types(colx=1, start_rowx=0, end_rowx=None)    #返回由该列中所有单元格的数据类型组成的列表
    table.col_values(colx=1, start_rowx=0, end_rowx=None)   #返回由该列中所有单元格的数据组成的列表
    

    4.5对指定的单元格进行操作

    table.cell(rowx=1,colx=1)   #返回单元格对象
    table.cell_type(rowx=1,colx=1)    #返回单元格中的数据类型
    table.cell_value(rowx=1,colx=1)   #返回单元格中的数据
    table.cell_xf_index(rowx=1,colx=1)   # 暂时还没有搞懂
    

    4.5关闭打开的excel文件

    data.release_resources()	# 释放(关闭)打开的excel文件
    

    表格中的数据类型值对应的数据类型

    0. empty(空的)    
    1. string(text)
    2. number
    3. date
    4. boolean
    5. error
    6. blank(空白表格)
    
    展开全文
  • Pythonxlrd模块

    2020-12-20 22:21:56
    本文由下面三个方向来对Python的xlrd模块展开学习 1.什么是xlrd模块? 2.如何使用xlrd模块??(即xlrd模块的方法) 3.为什么使用xlrd模块??? 一、什么是xlrd模块? Python做数据分析操作Excel时主要用到xlrd和...
  • Pythonxlrd模块使用

    千次阅读 2018-11-17 15:06:15
    模块需要自行安装,直接使用pip安装就能安装 简单使用 测试使用的表格 1、打开表格文件并获取所有sheet名称 &gt;&gt;&gt; rb = xlrd.open_workbook(r'E:\py-test\tests.xls') &gt;&gt;&...

    安装xlrd

    该模块需要自行安装,直接使用pip安装就能安装

    简单使用

    测试使用的表格
    在这里插入图片描述

    1、打开表格文件并获取所有sheet名称
    >>> rb = xlrd.open_workbook(r'E:\py-test\tests.xls')
    >>> rb.sheet_names()
    [u'Sheet1', u'Sheet2', u'Sheet3']
    
    2、获取需要打开的sheet
    >>> rb.sheet_names()[0]
    u'Sheet1'
    >>> rb.sheet_by_index(0)
    <xlrd.sheet.Sheet object at 0x000000000447D390>
    >>> rb.sheet_by_name('Sheet1')
    <xlrd.sheet.Sheet object at 0x000000000447D390>
    >>> 
    
    3、获取行数、列数及名称
    >>> sheet1 = rb.sheet_by_name('Sheet1')
    >>> sheet1.nrows
    11
    >>> sheet1.ncols
    5
    >>> sheet1.name
    u'Sheet1'
    >>> 
    
    4、读取一行、列的值
    >>> sheet1.row(0)
    [text:u'cz9025', text:u'B1', text:u'C1', xldate:43421.0]
    >>> sheet1.row_values(0)
    [u'cz9025', u'B1', u'C1', 43421.0]
    >>> sheet1.col(0)
    [text:u'cz9025', text:u'A2', text:u'A3', text:u'A4', text:u'A5', text:u'A6', text:u'A7', text:u'A8', text:u'A9', text:u'A10', text:u'A11']
    >>> sheet1.col_values(0)
    [u'cz9025', u'A2', u'A3', u'A4', u'A5', u'A6', u'A7', u'A8', u'A9', u'A10', u'A11']
    >>> 
    
    5、获取指定单元格的值
    >>> sheet1.cell(0, 0).value
    u'cz9025'
    >>> sheet1.cell_value(0, 0)
    u'cz9025'
    >>> sheet1.row(0)[0]
    text:u'cz9025'
    >>> sheet1.row(0)[0].value
    u'cz9025'
    >>> 
    
    6、单元格类型

    ctype 类型值说明: 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

    >>> sheet1.cell(0, 0).ctype
    1
    
    7、获取日期类型的格式

    获取表格中的日期 ,先判断是否为日期,否的话会报错

    >>> if sheet1.cell(0, 3).ctype == 3:
            date_value = xlrd.xldate_as_tuple(sheet1.cell_value(0, 3), rb.datemode)
            print u'日期=>', date(*date_value[:3])
            print u'格式化日期=>:', date(*date_value[:3]).strftime('%Y/%m/%d')
            dates = xlrd.xldate_as_datetime(sheet1.cell_value(0, 3), rb.datemode)
            print dates.date()
    
            
    日期=> 2018-11-17
    格式化日期=>: 2018/11/17
    2018-11-17
    >>> 
    
    8、获取合并单元格的内容

    merged_cells返回的这四个参数的含义是:(row,row_range,col,col_range),其中[row,row_range)包括row,不包括row_range,col也是一样,下标从0开始。这里,需要在读取文件的时候添加个参数,将formatting_info参数设置为True,默认是False,否则可能调用merged_cells方法获取到的是空值。

    >>> workbook = xlrd.open_workbook(r'E:\Py-Test-Script\py-test\user.xls', formatting_info=True)
    >>> sheet2 = workbook.sheet_by_name('Sheet1')
    >>> print sheet2.merged_cells
    [(1, 3, 3, 5), (4, 7, 3, 4)]
    >>> merg = []
    >>> for lrow, lrow_range, rcol, rcol_range in sheet2.merged_cells:
            merg.append([lrow, rcol])
            print sheet2.cell_value(lrow, rcol)
    
            
    合并D2-E3
    合并D5-D7
    >>> 
    

    合并行单元格读取行的第一个索引,合并列单元格读取列的第一个索引

    >>> sheet1.cell(1, 3).value
    u'\u5408\u5e76D2-E3'
    
    展开全文
  • pythonxlrd模块的使用

    2021-01-30 15:12:38
    xlrd模块的使用一、xlrd安装二、xlrd模块的使用1、导入模块2、打开工作薄3、获取需要操作sheet表格(有三种方法)①通过索引获取②通过索引顺序获取③通过sheet名称获取补充:获取工作薄中所有sheet名称三、行和...
  • 今天小编就为大家分享一篇python使用xlrd模块读取xlsx文件中ip方法,具有很好参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 二、xlrd模块的使用 下面以这个工作簿为例 在这里插入图片描述 1、导入模块 1 import xlrd 2、打开工作薄 1 2 # filename是文件路径名称 workbook = xlrd.open_workbook(filename=r'C:\Users\Windows10\Desktop\...
  • python xlrd 模块

    2020-07-06 18:19:33
    首先说明,xlrd是python里面主要对excel进行操作的...python去打开txt 等文件可以使用open ,操作excel的时候就可以使用专业的xlrd。 1.什么是xlrd? what 2.为什么使用xlrd ? why ? 3.如何使用 xlrd ? how? ...
  • python 的xlrd模块

    2018-09-20 14:35:00
    python官网下载http://pypi.python.org/pypi/xlrd模块安装。 ♦或者在cmd窗口pip installxlrd 二、使用 1.导入模块: import xlrd 2.打开Excel workbook = xlrd.open_workbook(filename)#文件名以及...
  • 本文实例讲述了python使用xlrd模块读写Excel文件方法。分享给大家供大家参考。具体如下:一、安装xlrd模块python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境。二、使用介绍...
  • 使用Python的xlrd模块来操作Excel应用场景: 当我们使用Python+unittest框架进行后端服务接口测试的时候,大家发现一个问题,我们的测试步骤是一样的,只是测试数据不同。 1. 组装请求参数 2. 发送HTTP请求 3...
  • on里面的xlrd模块详解(一) – 疯了的小蜗 – 博客园【内容】:> 那我就一下面积个问题对xlrd模块进行学习一下: 什么是xlrd模块? 为什么使用xlrd模块? 1.什么是xlrd模块?  :diamond_suit:python操作excel...
  • xlrd模块是用来处理 .xls 格式文档 打开.xls格式文档 import xlrd data=xlrd.open_workbook('test.xls') print(data) sheet1=data.sheet_by_index(0) nrows=sheet1.nrows #行数 ncols=sheet1.ncols #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 723
精华内容 289
关键字:

python的xlrd模块使用

python 订阅