zoukankan      html  css  js  c++  java
  • 25.xlrd、xlwt和openpyxl模块的比较和使用

    xlrd、xlwt和openpyxl模块的比较:
    1)xlrd:对xls、xlsx、xlsm文件进行读操作–读操作效率较高,推荐
    2)xlwt:对xls文件进行写操作–写操作效率较高,但是不能执行xlsx文件
    3)openpyxl:对xlsx、xlsm文件进行读、写操作–xlsx写操作推荐使用

    一、xlrd:对xls、xlsx文件进行读操作
    1.获取工作簿对象:xlrd.open_workbook()
    workBook = xlrd.open_workbook(filemname):打开Excel文件读取数据
    注:filemname为文件名以及路径,如果路径或者文件名有中文给前面加一个r表示原生字符。

    import xlrd
    filename=r'D:360极速浏览器下载文件阅读记录表.xls'
    workBook=xlrd.open_workbook(filename)

    2.获取工作表(sheet)对象
    1)workBook.sheet_names():获取所有sheet页的名字,返回一个列表
    2)sheetName = workBook.sheet_by_name(‘sheet1’):根据sheet页的名字获取指定表名的表,返回的是一个对象
    3)sheetName = workbook.sheet_by_index(0):根据sheet索引获取对应sheet表(索引是从0开始的),返回的是一个对象

    3.获取sheet的名称:name
    sheetName.name:获取sheet的名称

    4.获取行数和列数:nrows、ncols
    sheetName.nrows:获取表格的总行数
    sheetName.ncols:获取表格的总列数

    5.获取整行或整列的值(数组):row_values、col_values
    rows = sheetName.row_values(0)  # 获取第一行内容,返回一个列表
    cols = sheetName.col_values(0)  # 获取第一列内容,返回一个列表

    6.获取指定单元格的值:cell(a,b).value、row(1)[0].value
    sheetName.cell(1,0).value:获取第2行第一列的单元格数据
    sheetName.row(1)[0].value:获取第2行第一列的单元格数据

    7.获取单元格内容的数据类型:ctype
    sheetName.cell(1,0).ctype
    注:返回为代表数据类型的值,编码分别代表:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

    二、xlwt:对xls文件进行写操作
    1.新建工作簿:xlwt.Workbook()
    workBook = xlwt.Workbook() :新建工作簿

    2.在工作簿中新建sheet页:add_sheet()
    table = workBook .add_sheet(‘Over’,cell_overwrite_ok=True) # 如果对同一单元格重复操作会发生overwrite Exception,cell_overwrite_ok为可覆盖
    sheet = workBook .add_sheet(sheet_name):新增sheet表

    import xlwt
    wb=xlwt.Workbook(encoding='utf-8')  # 创建一个工作薄
    sheet=wb.add_sheet('文件阅读记录信息表') # 创建一个工作表

    3.向表格中写入数据:write(i,j,value)
    sheet.write(i,j,value) :向单元格(i,j)写入数据value

    4.保存工作簿:save()
    workBook.save(path)


    三、openpyxl:对xlsx文件进行写操作
    1.新建工作簿:openpyxl.Workbook()
    workBook = openpyxl.Workbook() :新建工作簿

    2.在工作簿中新建sheet页:create_sheet()
    sheet = workBook .create_sheet(sheet_name):新增sheet表:sheet_name

    3.向表格中写入数据:cell(i,j,value) --索引从1计数
    sheet= workBook .active :获得当前活跃的工作页,默认为第一个工作页
    sheet.cell(i,j,value) :向单元格(i,j)第i行第j列写入数据value
    注意:行号和列号都从1开始计数,即(1,1)为第一行第一列

    4.保存工作簿:save()
    workBook .save(path)

    四、openpyxl:对xlsx文件进行读操作
    1.获取工作簿对象:openpyxl.load_workbook()
    workBook = openpyxl.load_workbook(filemname):读取xlsx文件
    注:filemname为文件名以及路径,如果路径或者文件名有中文给前面加一个r表示原生字符。

    2.获取工作表(sheet)对象
    1)workBook.get_sheet_names():获取所有sheet页的名字(所有工作表名)
    2)sheetName = workBook.get_sheet_by_name(‘sheet1’):根据sheet页的名字获取指定表名的表
    3)sheetName = workBook.worksheets[0]:根据sheet索引获取对应sheet表

    3.获取sheet的名称:title
    sheetName.title:获取sheet的名称

    4.获取行数和列数:max_row、max_column
    sheetName.max_row:获取表格的总行数
    sheetName.max_column:获取表格的总列数

    5.获取整行或整列的值(数组):rows[i]、columns[i]
    rows = sheetName.rows:获取每一行内容,这是一个生成器,里面是每一行数据,每一行数据由一个元组类型包裹
    cols = sheetName.columns :获取每一列内容,同上
    sheetName.rows[0]:获取第一行内容–索引从0计数
    sheetName.columns[0]:获取第一列内容–索引从0计数

    6.获取指定单元格的值:cell(a,b).value–索引从1计数
    sheetName[‘A1’].value:获取第1行第一(A)列的单元格数据
    sheetName.cell(1,1).value:获取第1行第一列的单元格数据
    注:此处的行数和列数都是从1开始计数的,而在xlrd中是由0开始计数的

  • 相关阅读:
    [转]22条经典的编程引言 朱燚:
    [转]Windbg的学习记录(一) 朱燚:
    C#7.0 模式匹配与if语句
    使用switch表达式简化switch语句
    .Net 5 在函数中使用Lambda
    MongoDB find getmore操作慢问题排查
    multikey索引和wildCard索引场景比较
    一个高性能跨平台基于Python的Waitress WSGI Server的介绍!
    郁闷的一天!
    互联网项目管理要点
  • 原文地址:https://www.cnblogs.com/ubuntu1987/p/11933376.html
Copyright © 2011-2022 走看看