0
点赞
收藏
分享

微信扫一扫

Python杀死Excel?众多模块哪家强

Go_Viola 2022-08-27 阅读 165

大家可能可能会面临这个问题:

作为人生苦短的 Python 程序员,该如何优雅地操作 Excel?其实Python提供的操作Excel的库有7个之多,到底哪个更好使用更加方便呢?

首先让我们来整体把握下不同库的特点:

另外还有win32com,通过名字大家就知道离不开windows系统,该库存在于pywin32中,是一个读写和处理Excel文件的库。但是我的电脑是Mac,就不做展开了。 

官方文档:http://pythonexcels.com/python-excel-mini-cookbook/ 

DataNitro呢?严格来说它是一个Excel 的插件,安装也需单独到官网下载。也是仅支持windows系统。 

官方文档:https://datanitro.com/

具体内容大家也可以参看:http://www.python-excel.org

环境安装

安装

7个模块均为非标准库,因此都需要在命令行中 pip/pip3进行安装:

提示:

  • xlutils 仅支持 xls 文件,即2003以下版本;

  • xlwings 安装成功后,如果运行提示报错“ImportError: no module named win32api”,请再安装 pypiwin32 或者 pywin32 包;

模块导入

模块的导入跟以往导入其他模块一样,使用import进行导入,如果名字比较长还可以使用as起个别名。

xlutils 模块是 xlrd和 xlwt之间的桥梁,最核心的作用是拷贝一份通过 xlrd 读取到内存中的 .xls 对象,然后再拷贝对象上通过 xlwt 修改 .xls 表格的内容。xlutils 可以将 xlrd 的 Book 对象复制转换为xlwt 的Workbook 对象。

具体使用时通常导入的是模块中的copy子模块:

文档操作

由于设计模式的不同,导致基本的新建文件、修改文件、保存文件等功能在不同的库中存在着一定差异,比如xlsxwriter并不支持打开或修改现有文件,xlwings不支持对新建文件的命名等等,但是分析发现xlwings和openpyxl是对excel操作支持最多的两个库。

特别要说明一下xlutils库,xlrdxlwtxlutils 各自的功能都有局限性,但三者互为补充,覆盖了Excel文件尤其是 .xls 文件的操作。xlwt 可以生成 .xls 文件,xlrd 可以读取已经存在的 .xls文件,xlutils 连接 xlrd 和 xlwt 两个模块,使用户可以同时读写一个 .xls 文件。简单来说,xlrd负责读、xlwt 负责写、xlutils 负责提供辅助和衔接

性能对比

对几个库做了最基本的写入和读取测试,分别使用不同库进行添加及读取 5000行 * 800列 数据操作,得到所用时间,重复操作取平均值。另外在不同的电脑配置,不同的环境下结果肯定会有出入,数据仅供参考。

openpyxl虽然操作Excel的功能强大,但读写性能过于糟糕,尤其是写大表时,会占用大量内存,开启read_only和write_only模式后对其性能有大幅提升,尤其是对读的性能提升很大,使其几乎不耗时。

pandas把Excel当作数据读写的容器,为其强大的数据分析服务,因此读写性能表现中规中矩,但其对Excel文件兼容性是最好的,支持读写.xls,.xlsx文件,且支持只读表中单一工作页。

同样支持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作。

xlsxwriter功能单一,一般用来创建.xlsx文件,写入性能中庸。

综合考虑,xlwings的表现最佳,正如其名,xlwings——Make Excel Fly!

通过以上分析,相信大家对几个库都有了简单的了解。你可根据自己的需求和生产环境,选择合适的 Python-Excel 模块

附上一部分常用代码:

xlwings基本代码

import xlwings as xw

#连接到excel
workbook = xw.Book('你的excel文件的路径')#连接excel文件
#连接到指定单元格
data_range = workbook.sheets('Sheet1').range('A1')
#写入数据
data_range.value = ['a','b','c']
#保存
workbook.save()

xlsxwriter基本代码

import xlsxwriter as xw
#新建excel
workbook  = xw.Workbook('你的excel文件的路径')
#新建工作薄
worksheet = workbook.add_worksheet()
#写入数据
worksheet.wirte('A1','a')
#关闭保存
workbook.close()

xlutils基本代码

import xlrd #读取数据
import xlwt #写入数据
import xlutils.copy #操作excel
# 通过xlrd读取数据

#打开excel文件
workbook = xlrd.open_workbook('你的excel文件的路径')
#获取表单
worksheet = workbook.sheet_by_index(0)
#读取数据
data = worksheet.cell_value(0,0)

# 通过xlwt写入数据
#新建excel
wb = xlwt.Workbook()
#添加工作薄
sh = wb.add_sheet('Sheet1')
#写入数据
sh.write(0,0,'abc')
#保存文件
wb.save('myexcel.xls')


#打开excel文件
book = xlrd.open_workbook('你的excel文件的路径')
#复制一份
new_book = copy(book)
#拿到工作薄
worksheet = new_book.getsheet(0)
#写入数据
worksheet.write(0,0,'mydata')
#保存
new_book.save()

openpyxl基本代码

 import openpyxl
 # 新建文件
 workbook = openpyxl.Workbook() 
 # 写入文件
 sheet = workbook.activesheet['A1']='A1'
 # 保存文件 
 workbook.save('你的excel保存路径')

本文目的并不是要评出一个最好的库,仅是从不同角度对不同库进行对比,希望能够让大家了解各个库所擅长的工作

只有充分了解不同工具的特点,才能够在不同的场景下灵活运用不同的方法来高效解决问题!

-END-

扫码添加请备注:python,进群与宋老师面对面交流:517745409

 

 

举报

相关推荐

0 条评论