xlrd、xlwt和openpyxl模块的比较

时间:2023-02-07 07:19:17

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

一、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.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的名称: 第1种是通过wb的sheetnames属性获取所有sheet名字,以列表的形式返回;print(wb.sheetnames) #注:sheet的索引序号是从0开始 第2种是通过sheet对象的title属性来获取

for sheet in wb:
	print(sheet.title)

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开始计数的

四、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,1)为第一行第一列 4.保存工作簿:save() workBook.save(path) # workBook.save(r"C:\Users\point\Desktop\c.xlsx") workBook.close()