xlrd、xlwt和openpyxl模块的比较:
区别:
模块 | Excel格式支持 | |
xls | xlsx | |
xlrd | √ | √ |
xlwt | √ | × |
openpyxl | × | √ |
效率:
两种包对小文件的读写速度差别不大,而面对较大文件,xlrd/xlwt速度明显优于openpyxl,但因为xlwt无法生成xlsx是个硬伤,所以想要尽量提高效率又不影响结果时,可以考虑用xlrd读取,用openpyxl写入。
一、xlrd:对xls、xlsx文件进行读操作
1.获取工作簿对象:xlrd.open_workbook()
workBook = xlrd.open_workbook(filemname):打开Excel文件读取数据
注:filemname为文件名以及路径,如果路径或者文件名有中文给前面加一个r表示原生字符。
1
2
3
|
import xlrd filename = r 'D:\记录表.xls' workBook = xlrd.open_workbook(filename) |
2.获取工作表(sheet)对象
1)获取所有sheet页的名字,返回一个列表
1
|
workBook.sheet_names() |
2)根据sheet页的名字获取指定表名的表,返回的是一个对象
1
|
sheetName = workBook.sheet_by_name(‘sheet1') |
3)根据sheet索引获取对应sheet表(索引是从0开始的),返回的是一个对象
1
|
sheetName = workbook.sheet_by_index( 0 ) |
3.获取sheet的名称:name
1
|
sheetName.name |
4.获取行数和列数:nrows、ncols
1)获取表格的总行数
1
|
sheetName.nrows |
2)获取表格的总列数
1
|
sheetName.ncols |
5.获取整行或整列的值(数组):row_values、col_values
1
2
|
rows = sheetName.row_values( 0 ) # 获取第一行内容,返回一个列表 cols = sheetName.col_values( 0 ) # 获取第一列内容,返回一个列表 |
6.获取指定单元格的值:cell(a,b).value、row(1)[0].value
1
2
|
sheetName.cell( 1 , 0 ).value # 获取第2行第一列的单元格数据 sheetName.row( 1 )[ 0 ].value # 获取第2行第一列的单元格数据 |
7.获取单元格内容的数据类型:ctype
1
|
sheetName.cell( 1 , 0 ).ctype |
注:返回为代表数据类型的值,编码分别代表:ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
二、xlwt:对xls文件进行写操作
1.新建工作簿:xlwt.Workbook()
1
|
workBook = xlwt.Workbook() |
2.在工作簿中新建sheet页:add_sheet()
1
2
|
table = workBook .add_sheet(‘Over',cell_overwrite_ok = True ) # 如果对同一单元格重复操作会发生overwrite Exception,cell_overwrite_ok为可覆盖 sheet = workBook .add_sheet(sheet_name) # 新增sheet表 |
1
2
3
|
import xlwt wb = xlwt.Workbook(encoding = 'utf-8' ) # 创建一个工作薄 sheet = wb.add_sheet( '文件阅读记录信息表' ) # 创建一个工作表 |
3.向表格中写入数据:write(i,j,value)
1
|
sheet.write(i,j,value) # 向单元格(i,j)写入数据value |
4.保存工作簿:save()
1
|
workBook.save(path) |
三、openpyxl:
1、对xlsx文件进行写操作
1).新建工作簿:openpyxl.Workbook()
1
|
workBook = openpyxl.Workbook() # 新建工作簿 |
2).在工作簿中新建sheet页:create_sheet()
1
|
sheet = workBook .create_sheet(sheet_name) # 新增sheet表:sheet_name |
3).向表格中写入数据:cell(i,j,value) --索引从1计数
1
2
|
sheet = workBook .active # 获得当前活跃的工作页,默认为第一个工作页 sheet.cell(i,j,value) # 向单元格(i,j)第i行第j列写入数据value |
注意:行号和列号都从1开始计数,即(1,1)为第一行第一列
4).保存工作簿:save()
1
|
workBook .save(path) |
2、openpyxl:对xlsx文件进行读操作
1).获取工作簿对象:openpyxl.load_workbook()
1
|
workBook = openpyxl.load_workbook(filemname) # 读取xlsx文件 |
注:filemname为文件名以及路径,如果路径或者文件名有中文给前面加一个r表示原生字符。
2).获取工作表(sheet)对象
1
2
3
|
workBook.get_sheet_names() # 获取所有sheet页的名字(所有工作表名) sheetName = workBook.get_sheet_by_name(‘sheet1') # 根据sheet页的名字获取指定表名的表 sheetName = workBook.worksheets[ 0 ] # 根据sheet索引获取对应sheet表 |
3).获取sheet的名称:title
1
|
sheetName.title # 获取sheet的名称 |
4).获取行数和列数:max_row、max_column
1
2
|
sheetName.max_row # 获取表格的总行数 sheetName.max_column # 获取表格的总列数 |
5).获取整行或整列的值(数组):rows[i]、columns[i]
1
2
3
4
|
rows = sheetName.rows # 获取每一行内容,这是一个生成器,里面是每一行数据,每一行数据由一个元组类型包裹 cols = sheetName.columns # 获取每一列内容,同上 sheetName.rows[ 0 ] # 获取第一行内容–索引从0计数 sheetName.columns[ 0 ] # 获取第一列内容–索引从0计数 |
6).获取指定单元格的值:cell(a,b).value–索引从1计数
1
2
|
sheetName[‘A1'].value # 获取第1行第一(A)列的单元格数据 sheetName.cell( 1 , 1 ).value # 获取第1行第一列的单元格数据 |
注:此处的行数和列数都是从1开始计数的,而在xlrd中是由0开始计数的
总结
到此这篇关于Python对Excel进行处理的文章就介绍到这了,更多相关Python对Excel处理内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/weixin_44648973/article/details/114300082