• python处理exce方法:xlrd、openyxl


    excel 2010及以上(xlsx)使用 openpyxl
    excel 2007 (xls)使用xlrd
    pandas也是依赖xlrd,openpyxl

    xlrd

    import xlrd
    
    data = xlrd.open_workbook(r'excel1.xls')
    
    names = data.sheet_names()
    print(names)
    
    table = data.sheet_by_index(2)
    print(table)
    
    rows = table.nrows # 获取行数
    ncols = table.ncols # 获取列数
    
    print(rows, ncols)
    print(table.row_values(0)) # 获取第一行行内容
    print(table.col_values(0)) # 获取第一列内容
    print(table.cell_value(2, 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是否导入完毕
    

    行的操作

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

    列的操作

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

    获取单元格

    table.cell_value(rowx,colx)   #返回单元格中的数据
    

    修改

    没有直接修改 xls 文件的方法。通常的做法是,读取出文件,复制一份数据,对其进行修改,再保存。
    在复制时,需要用到 xlutils 中的方法。

    from xlrd import open_workbook
    from xlutils.copy import copy
    # 打开文件
    rb = open_workbook("example.xls")
    # 复制
    wb = copy(rb)
    # 选取表单
    s = wb.get_sheet(0)
    # 写入数据
    s.write(0, 1, 'new data')
    # 保存
    wb.save('example.xls')
    
    • 特别要注意的是,选取读取表单时,要使用 sheet_by_index,而在选取写入表单时,则要用 get_sheet。不要问我为什么,我也很想知道这么设定的用意何在……

    openyxl

    from openpyxl import load_workbook
    from openpyxl import Workbook
    
    wb = load_workbook('测试表.xlsx')
    print(wb)
    print(wb.sheetnames) #
    
    ws = wb['工作表1']
    
    # 两种获取单元格方式,都是对象,获取值使用value属性
    c = ws['D1']
    d = ws.cell(1,1)
    
    # 访问多个单元格
    cells = ws['A1':'D3']
    
    # print(c,d)
    # print(d.value)
    # print(cells)
    
    # 行
    row_10 = ws[10]
    row_range = ws[5:10]
    
    
    
    # 列
    col_c =  ws['C']
    col_range = ws['C':'D']
    
    print(col_c)
    
    Worksheet.iter_rows() # 逐行返回
    Worksheet.iter_cols() # 逐列返回,只读模式下不可用
    
    ws.rows # 返回所有行
    ws.columns # 返回所有列
    
    • 添加保存
    Workbook.create_sheet() # 添加工作表
    
    ws.title = "New Title" # 修改工作表的名字sheet1
    
    ws['A1'] = 3  # 单元格直接赋值
    
    wb.save('temp.xlsx') # 保存工作簿
    
    
  • 相关阅读:
    Spring Boot 自定义starter
    jvm中的年轻代 老年代 持久代 gc
    nginx反向代理服务器端口问题
    ACE Editor在线代码编辑器简介及使用引导
    Linux下MySQL 5.6.24的编译安装与部署
    C3p0的参数
    Mysql 查看连接数,状态
    linux下mysql定时备份数据库
    Mysql中存储方式的区别
    mysql常用语句
  • 原文地址:https://www.cnblogs.com/oklizz/p/12864521.html
Copyright © 2020-2023  润新知