• python使用xlrd读取excel数据


    一、安装xlrd

     库的安装我这里就不说了..

    二、读取 excel

    前提条件:excel文件名称为 excel_data.xlsx

     

    1、打开excelw 文件

    workbook = xlrd.open_workbook(filename) # filename 为excel文件路径 + 文件名称

    2、获取 excel 的sheet工作表的内容

    (1)比如:获取第一个sheet工作表的名称,如图

     贴上代码:

    get_sheet_name = workbook.sheet_names()[0]  # [0]表示索引,获取第一个sheet工作表名称

    (2)比如:获取 excel 所有的sheet工作表的名称

    sheetname = workbook.sheet_names()

    (3)根据工作表的名称获取sheet工作表页的对象

    workbook = xlrd.open_workbook(FileName)
    get_sheet_name = workbook.sheet_names()[0]
    sheet2 = workbook.sheet_by_name(get_sheet_name)
    print(sheet2)

    输出:

    <xlrd.sheet.Sheet object at 0x00000181B7CFCA90>

    (4)根据工作表的索引获取sheet工作表页的对象

    workbook = xlrd.open_workbook(FileName)
    sheet1 = workbook.sheet_by_index(0)
    print(sheet1)       

    输出:

    <xlrd.sheet.Sheet object at 0x000001C661A8C9B0>

    (5)获取sheet工作表的行数和列数

    workbook = xlrd.open_workbook(FileName)  # 打开文件
    sheet1 = workbook.sheet_by_index(1)    # 根据索引获取第一个工作表的内容(通过更改索引数字1,可以获取第几个工作表的内容)
    nrows = sheet1.nrows              # 获取sheet工作表的行数
    ncols
    = sheet1.ncols              # 获取sheet工作表的列数 print(nrows) print(ncols)

    输出:

    11和7;说明有11行和7列

     (6)获取第1行(索引为0)的内容(是一个列表)

    workbook = xlrd.open_workbook(FileName)
    sheet1 = workbook.sheet_by_index(1)
    row_data = sheet1.row_values(0)
    print(row_data)

    (7)获取第1列(索引为0)的值(是一个列表)

    workbook = xlrd.open_workbook(FileName)
    sheet1 = workbook.sheet_by_index(1)
    col_data = sheet1.col_values(0)
    print(col_data)

    (8)使用行列索引(从0开始)获取单元格的数据

    workbook = xlrd.open_workbook(FileName)
    sheet1 = workbook.sheet_by_index(1)
    cell_A1 = sheet1.cell(0, 0)
    print(cell_A1)
    

    (9)将Excel文件中的数据转换成json数组

    import xlrd
    import json
    
    
    def readexcel(FileName):
        workbook = xlrd.open_workbook(FileName)
        sheet1 = workbook.sheet_by_index(1)
        nrows = sheet1.nrows
    
        idx = sheet1.row_values(0)
        # 最终的数据列表
        data = []
        # 从第1行开始遍历循环所有行,获取每行的数据
        for i in range(1,nrows):
            row_data = sheet1.row_values(i)
            # 组建每一行数据的字典
            row_data_dict = {}
            # 遍历行数据的每一项,赋值进行数据字典
            for j in range(len(row_data)):
                item = row_data[j]
                row_data_dict[idx[j]] = item
                # 将年份字段转成整形
                #row_data_dict['year'] = int(row_data_dict['year'])
            # 将行数据字典加入到data列表中
            data.append(row_data_dict)
            result = json.dumps(data,indent = 4,ensure_ascii=False)
            print(result)
    
    
    if __name__ == '__main__':
    
        readexcel(r'D:/CodeBase/ReadData/ReadExcel/excel_data.xlsx')

    输出:

    [
        {
            "车牌号": "粤A123456",
            "设备号": 13645454412.0,
            "sim卡号": 13645454412.0,
            "设备类型": "A5C-8W",
            "所属车组": "测试",
            "车架号": 123.0,
            "服务密码": 123.0
        }
    ]

    注意:

    json.dumps 进行序列化时,默认使用ascii编码, print json.dumps(data,indent = 4)输出unicode编码的结果,比如: {"u8f66u724cu53f7": "u7ca4A123456"}

    json.dumps(data,indent = 4,ensure_ascii=False),不使用ascii编码,输出结果为:{"车牌号": "粤A123456"}

    但是有时也碰到 json.dumps(data,indent = 4,ensure_ascii=False)之后依旧是乱码的格式,可采取下面方式处理:

    import json 
    
    dic = {"车牌号": "粤A123456"}print json.dumps(dic,ensure_ascii=False).decode("utf-8").encode("gb2312") #{"车牌号": "粤A123456"}

    https://blog.csdn.net/dnxbjyj/article/details/71774176

  • 相关阅读:
    Java集合——Map接口
    Django 创建一个返回当前时间的页面
    python 练习 后台返回当前时间
    python 练习 simple_server 判断路径及返回函数
    通过 docker 来搭建 Jenkins
    Bitbucket 触发内网 Jenkins Build
    jQuery 扩展方法
    HTML 练习滑动
    HTML 练习淡入淡出
    HTML 练习显示隐藏
  • 原文地址:https://www.cnblogs.com/yfacesclub/p/11863787.html
Copyright © 2020-2023  润新知