python操作Excel,你觉得哪个库更好呢?

本文详细比较了Python中用于操作Excel的xlrd、xlwt、xlutils、openpyxl和xlsxwriter库。xlrd和xlwt适用于xls格式,但xlrd只读,xlwt只写;xlutils常与xlrd、xlwt配合修改Excel文件。openpyxl支持读写xlsx文件,功能强大,包括创建、修改工作表和设置单元格格式。xlsxwriter则仅支持写入,不支持读取,但能创建复杂的格式和图表。文章提供了各库的使用示例,帮助选择合适的Excel操作库。
摘要由CSDN通过智能技术生成

每一个Excel数据文件从上至下分为三个层级的对象:
workbook:每一个Excel文件就是一个workbook。
sheet:每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。
cell:每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。

Excel模块对比
平台:Mac
工具:PyCharm
Python:python3.6
Excel行数:64543

openpyxl	xlrd&xlwt	xlsxwriter

读取 9.40690302848816 5.220927000045776 不支持
读写 8.909524202346802 6.502154111862183 9.416481733322144
类型 xlsx xlsx、xls(写) xlsx
格式 可读取 xlsx不支持 X
从一个既有的xlsx文件中读取数据,按照Excel文件的三个层级,分别来看一下以上三个库的操作方式。

xlrd & xlwt & xlutils
xlrd负责读取Excel文件,支持xls、xlsx
xlwt负责写入Excel文件,只支持xls格式。对于现在已经Office2019了,还只支持2003版的格式难怪会被人抛弃。
xlutils是一个工具模块,我们一般只用到copy模块,用于修改已存在的Excel文件

open_workbook

param: encoding_override 读取Excel文件时默认使用ASCII编码。此处可指定编码。
param: formatting_info
设置是否保存Excel格式,比如加粗。一般只对简单的格式起作用,而且xlsx格式文件不支持。
这可以节省内存。在这种情况下,通过忽略文件BLANK和MULBLANK记录,“空白”单元格(它们具有自己的格式信息但没有数据)会被视为空白

param: on_demand
按需加载工作表。默认加载False,加载所有的工作表。设置True时,调用book.sheet_by_name或book.sheet_by_index才会加载工作表。book.sheets加载所有工作表。book.sheet_loaded判断表单是否已加载。book.unload_sheet卸载已加载表单。

打开workbook:
import xlrd
book = xlrd.open_workbook(“myfile.xls”) #book就赋值为一个Excel文件了
注:
Book 类的方法、属性等:即就可以对上面的book进行操作了
book.nsheets: 在Book对象中的文件有多少个worksheet。
book.sheet_by_index(sheetx): 根据提供的sheetx索引来获取我们需要的sheet表,返回的是一个Sheet类的实例。
book.sheet_by_name(sheet_name): 根据提供的sheet_name来获取对应名称的sheet类对象,返回的也是一个Sheet类的对象。
book.sheet_names(): 在Book对象中的所有sheet表的名称列表。
book.sheets(): 返回在Book对象中所有的Sheet对象实例列表。

打开所需的sheet:
sheet = book.sheet_by_index(0) #获得一个sheet,也可以使名字获得
print sheet.name, sheet.nrows, sheet.ncols
注:
Sheet类方法、属性等:
sheet.cell(rowx, colx): 根据给出的行和列的参数获取得到cell类,返回一个Cell类实例对象。
sheet.cell_type(rowx, colx): 返回对应的cell对象的Type类型。
sheet.cell_value(rowx, colx): 返回对应的cell对象的value值。
sheet.col(colx): 返回指定列的所有cell类对象序列。
sheet.name: 返回sheet对象的名称。
sheet.ncols: 返回在sheet对象中的列的数目。
sheet.nrows: 返回在sheet对象中的行的数目。
sheet.row(rowx): 返回指定的行的所有cell对象的序列。
sheet.row_values(rowx, start_colx=0, end_colx=None):获取行内容。
sheet.col_values(colx, start_rowx=0, end_rowx=None):获取列内容。

获取对应cell的值:
cell=sheet.cell(rowx=29, colx=3) #根据给出的行和列的参数获取得到cell类,返回一个Cell类实例对象.
sh.cell_value(rowx=29, colx=3)
注:
Cell类的属性、方法如下:
Cell类对象有3种属性:ctype, value, xf_index
如果在excel文件打开的时候,formatting_info未启用的时候,xf_index是为None
下面列出了cell的类型,以及他们在python中所代表的值
type symbol type number python value
XL_CELL_EMPTY 0 空的字符串’’
XL_CELL_TEXT 1 unicode字符串
XL_CELL_NUMBER 2 float
XL_CELL_DATE 3 float
XL_CELL_BOOLEAN 4 int;1 — True,0 — False
XL_CELL_ERROR 5 int代表是一个excel内部错误码;
XL_CELL_BLANK 6 空的字符串’’, 注意:这个类型仅仅会出现,当函数open_workb

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值