zoukankan      html  css  js  c++  java
  • python 读取 execl 文件 之 xlrd 模块

    1. 安装 xlrd模块

    pip install  xlrd

    2. 读取文件内容

    #!/usr/bin/env python3
    import xlrd
    
    name = r"E:excelyong.xls"
    
    # 1. 打开文件
    data = xlrd.open_workbook(name)
    
    # 2. 打开工作表
    #   2.1. 打印 文件对象的工作表明, 列表格式
    # all_table_name = data.sheet_names()
    # print(all_table_name)
    
    #   2.2. 打开所有的工作表的列表
    # table = data.sheets()  # 格式为 list 获取多个, 遍历即可
    
    #   2.3. 通过索引选取工作表, 如果索引没有工作表就会报错
    # table = data.sheet_by_index(0)
    
    #   2.4. 打开指定工作表
    table = data.sheet_by_name(u'Sheet1')
    
    # 3. 获取行, 列
    #   3.1. 获取行数
    nrows = table.nrows
    print(nrows)
    
    #   3.2. 获取 列数
    ncols = table.ncols
    print(nrows)
    
    # 4. 获取所有行
    list_data = []
    #   4.1. 循环 nrows打印的行数
    for i in range(nrows):
        # 1). 使用 row.values 方法, 获取 文件的第 i 行数据, 格式为 list  ,从0开始计数
        line_data = table.row_values(i)
        # print('line_data: ', line_data, type(line_data))
        
        # 2). 获取 一列
        myColValues = table.col_values(i)  # i是列数,从0开始计数,返回list对象。
    
        # 3). 将 列表添加进总列表中
        list_data.append(line_data)
    
    # 4.2. 打印总数据列表
    print(list_data)

    3. 模块的方法

    1). 打开文件函数, 返回一个可操作的对象
        data = xlrd.open_workbook("文件路径")
    
    2). 获取行, 列数
        (1): 获取行数
            nrows = table.nrows
            print(nrows)
    
        (2):  获取列数
            ncols = table.ncols
            print(nrows)
        
    3). 根据对象工作表
        (1): 打印 文件对象的工作表明, 列表格式
            all_table_name = data.sheet_names()
             print(all_table_name)
             
        (2): 打开所有的工作表的列表, 格式为 list 获取多个, 遍历即可
            table = data.sheets()
        
        (3):  通过索引选取工作表, 如果索引没有工作表就会报错
            table = data.sheet_by_index(0)
        (4): 打开指定工作表
            table = data.sheet_by_name(u'Sheet1')  # 必须是 unicode 格式
    
    4). 获取行内容
        (1): 获取行内容
            table.row_values(i)  # i 是想要去的行数, 从 0 开始 所以一般选择 1.1 中的遍历取值
        
        (2). 获取列内容
            myColValues = table.col_values(i)  # i是列数,从0开始计数,返回 list 对象。
    
    5). 获取单元格内容
        cell_A1 = table.cell(0,0).value  
        cell_C4 = table.cell(2,3).value
    
    6). 使用行列索引
        cell_A1 = table.row(0)[0].value  
        cell_A2 = table.col(1)[0].value
    
    7). 使用行列索引
        cell_A1 = table.row(0)[0].value  
        cell_A2 = table.col(1)[0].value  
    

    4. Excel 时间转换

    import xlrd
    
    excel_path = r"D:excel文件.xlsx"
    
    xlrd_obj = xlrd.open_workbook(excel_path)
    table = xlrd_obj.sheet_by_index(1)
    
    
    for i in range(table.nrows):
        # 1. 获取一行数据
        line_data = table.row_values(i)
        
        # 2. 获取列表的第一个值
        start_date = line_data[0]
    	
        # 3. 判断是否是 float
        if isinstance(start_date, float):
            # 4. 将 浮点数转化为 时间格式 
            start_date = xlrd.xldate.xldate_as_datetime(start_date, 0)
            
            # 5. 将 日期格式转化为 字符串格式
            start_date = start_date.strftime('%Y-%m-%d')
            
            line_data[0] = start_date
    
        print("line_data1: ", line_data)
    

      

  • 相关阅读:
    [QT][待解决问题]对话框ui载入卡顿问题
    [QT] Tab键切换焦点顺序
    [QT][问题记录]发布软件时遇到的问题
    [QT][转载] Qt信号和槽
    [QT][转载]Qt:使用C++还是QML
    [qt][问题记录] 无法定位程序输入点 _ZdaPvj 于动态链接库 libstdc++-6.dll
    [QT]安装中出现的问题(安装qt5.8,出现Could not start:"{0,3010,1603,5100} msiexec ...")
    [转载]Lwip之IP/MAC地址冲突检测
    转载:TCP连接的状态详解以及故障排查
    git push (第一次) (转)
  • 原文地址:https://www.cnblogs.com/dream4567/p/9205726.html
Copyright © 2011-2022 走看看