Python读写Excel文件第三方库汇总,你想要的都在这儿!(2)

openpyxl

openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。

https://openpyxl.readthedocs.io/en/stable/

1、openpyxl支持.xlsx文件的读写。

2、支持Excel操作。

3、加载大.xlsx文件可以使用read_only模式。

4、写入大.xlsx文件可以使用write_only模式。

xlsxwriter

xlsxwriter是一个用于创建Excel .xlsx文件的库。

https://xlsxwriter.readthedocs.io/

1、xlswriter支持.xlsx文件的写。

2、支持VBA。

3、写入大.xlsx文件时使用内存优化模式。

win32com

win32com库存在于pywin32中,是一个读写和处理Excel文件的库。

http://pythonexcels.com/python-excel-mini-cookbook/

1、win32com支持.xls,.xlsx文件的读写,支持.xlsx文件的写。

2、支持Excel操作。

DataNitro

DataNitro是一个内嵌在Excel中的插件。

https://datanitro.com/docs/

1、DataNitro支持.xls,.xlsx文件的读写。

2、支持Excel操作。

3、支持VBA。

4、收费

pandas

pandas通过对Excel文件的读写实现数据输入输出

http://pandas.pydata.org/

1、pandas支持.xls,.xlsx文件的读写。

2、支持只加载每个表的单一工作页。

环境配置及可实现操作


注:DataNitro作为插件使用需依托软件本身。

参考:https://zhuanlan.zhihu.com/p/23998083

读写测试


测试计算机硬件和系统

电脑型号 微星 MS-7846 台式电脑

操作系统 Windows 7 旗舰版 64位 SP1 ( DirectX 11 )

处理器 英特尔 Pentium(奔腾) G3260 @ 3.30GHz 双核

主板 微星 H81M-P32L (MS-7846) ( 英特尔 Haswell - Lynx Point )

内存 4 GB ( 金士顿 DDR3 1600MHz )

主硬盘 西数 WDC WD5000AZLX-00ZR6A0 ( 500 GB / 7200 转/分 )

显卡 英特尔 Haswell Integrated Graphics Controller ( 256 MB / 微星 )

测试用例

用例1. 读.xls文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

用例2. 读.xlsx文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

用例3. 读.xls文件的整个表(表有1个分页,页有2000行1200列的整数)。

用例4. 读.xlsx文件的整个表(表有1个分页,页有2000行1200列的整数)。

用例5. 写.xls文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

用例6. 写.xlsx文件的整个表(表有5个分页,每个分页有2000行1200列的整数)。

用例7. 写.xls文件的整个表(表有1个分页,页有2000行1200列的整数)。

用例8. 写.xlsx文件的整个表(表有1个分页,页有2000行1200列的整数)。

测试结果

注1.xlwt和pandas每个工作页最多写入256列,因此测试用例修改为每页有2000行256列的整数.

注2.xlutils读写依赖于xlrd和xlwt,不单独测试。

注3.openpyxl测试两种模式,一是普通加载写入,二是read_only/write_only模式下的加载写入。

注4.DataNitro要收费,且需依托Excel使用,本次不测试。

读写性能比较

单从读写的性能上考虑,win32com的性能是最好的,xlwings其次。

openpyxl虽然操作Excel的功能强大,但读写性能过于糟糕,尤其是写大表时,会占用大量内存(把我的4G内存用完了),开启read_only和write_only模式后对其性能有大幅提升,尤其是对读的性能提升很大,使其几乎不耗时(0.01秒有点夸张,不过确实是加载上了)。pandas把Excel当作数据读写的容器,为其强大的数据分析服务,因此读写性能表现中规中矩,但其对Excel文件兼容性是最好的,支持读写.xls,.xlsx文件,且支持只读表中单一工作页。同样支持此功能的库还有xlrd,但xlrd只支持读,并不支持写,且性能不突出,需要配合xlutils进行Excel操作,并使用xlwt保存数据,而xlwt只能写入.xls文件(另一个可以写入.xls文件的库是pandas,且这两个写入的Excel文件最多只能有256列,其余库就我目前的了解均只能写入.xlsx文件),性能一般。xlsxwriter功能单一,一般用来创建.xlsx文件,写入性能中庸。win32com拥有最棒的读写性能,但该库存在于pywin32的库中,自身没有完善的文档,使用略吃力。xlwings拥有和win32com不相伯仲的读写性能,强大的转换器可以处理大部分数据类型,包括二维的numpy array和pandas DataFrame,可以轻松搞定数据分析的工作。

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

便捷性比较

本测试目前只是针对Excel文件的读写,并未涉及Excel操作,单从读写的便捷性来讲,各库的表现难分上下,但是win32com和xlwings这两个库可以在程序运行时实时在打开的Excel文件中进行操作,实现过程的可视化,其次xlwings的数据结构转换器使其可以快速的为Excel文件添加二维数据结构而不需要在Excel文件中重定位数据的行和列,因此从读写的便捷性来比较,仍是xlwings胜出。

测试代码

计时

import timeit

if name == ‘main’:

使用timeit计时

t = timeit.Timer(‘??()’, setup=‘from main import ??’)

print(t.timeit(number=1))

xlrd

import xlrd

def test_xlrd_on_demand_false():

f = xlrd.open_workbook(‘test_cases\read_xls.xls’, on_demand=False)

f = xlrd.open_workbook(‘test_cases\read_xlsx.xlsx’, on_demand=False)

def test_xlrd_on_demand_true():

f = xlrd.open_workbook(‘test_cases\read_xls.xls’, on_demand=True)

f = xlrd.open_workbook(‘test_cases\read_xlsx.xlsx’, on_demand=True)

f.sheet_by_index(0)

xlwt

import xlwt

book = xlwt.Workbook()

def test_xlwt():

for s in range(5):

sheet = book.add_sheet(str(s))

for i in range(2000):

for j in range(256):

sheet.write(i, j, 65536)

book.save(‘test_cases\write_xls.xls’)

xlwings

import xlwings

def test_xlwings_read():

f = xlwings.Book(‘test_cases\read_xls.xls’)

f = xlwings.Book(‘test_cases\read_xlsx.xlsx’)

import numpy as np

f = xlwings.Book(‘’)

d = np.zeros([2000, 1200])

d += 65536

def test_xlwings_write():

for s in range(1):

sheet = f.sheets.add()

sheet.range(‘A1’).value = d

f.save(‘test_cases\write_xlsx.xlsx’)

openpyxl

import openpyxl

def test_openpyxl_read():

f = openpyxl.load_workbook(‘test_cases\read_xlsx.xlsx’, read_only=True)

c = [65536] * 1200

f = openpyxl.Workbook(write_only=True)

def test_openpyxl_write():

for i in range(1):

sheet = f.create_sheet(title=str(i))

for row in range(2000):
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

-rhftAkNq-1712944204260)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值