感谢 ChrisMinions,原文链接https://blog.csdn.net/qq_34617032/article/details/80433939

常见库简介
xlrd
xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件。
http://xlrd.readthedocs.io/en/latest/
    1、xlrd支持.xls,.xlsx文件的读
    2、通过设置on_demand变量使open_workbook()函数只加载那些需要的sheet,从而节省时间和内存(该方法对.xlsx文件无效)。
    3、xlrd.Book对象有一个unload_sheet方法,它将从内存中卸载工作表,由工作表索引或工作表名称指定(该方法对.xlsx文件无效)

xlwt
xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(如.xls)。
https://xlwt.readthedocs.io/en/latest/
    1、xlwt支持.xls文件写。

xlutils
xlutils是一个处理Excel文件的库,依赖于xlrd和xlwt。
http://xlutils.readthedocs.io/en/latest/
    1、xlutils支持.xls文件。
    2、支持Excel操作。

xlwings
xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。
http://docs.xlwings.org/en/stable/index.html
    1、xlwings支持.xls读,支持.xlsx文件读写。
    2、支持Excel操作。
    3、支持VBA。
    4、强大的转换器可以处理大部分数据类型,包括在两个方向上的numpy array和pandas DataFrame。

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):  
            sheet.append(c)  
    f.save('test_cases\\write_xlsx.xlsx')  
xlsxwriter

import xlsxwriter  
  
workbook = xlsxwriter.Workbook('test_cases\\write_xlsx.xlsx')  
def test_xlsxwriter():  
    for s in range(1):  
        worksheet = workbook.add_worksheet()  
        for i in range(2000):  
            for j in range(1200):  
                worksheet.write(i, j, 65536)  
    workbook.close() 
win32com

import win32com.client as win32  
 
excel = win32.gencache.EnsureDispatch('Excel.Application')  
def test_win32com_read():  
    # wb = excel.Workbooks.Open('E:\\excel\\test_cases\\read_xls.xls')  
    wb = excel.Workbooks.Open('E:\\excel\\test_cases\\read_xlsx.xlsx')
    # excel.Visible = True  
  
  
wb = excel.Workbooks.Add()  
def test_win32com_write():  
    for i in range(1):  
        ws = wb.Worksheets.Add()  
        ws.Range("A1:ATD2000").Value = 65536  
  
    wb.SaveAs('E:\\excel\\test_cases\\write_xlsx.xlsx')  
    excel.Application.Quit()  
pandas

import pandas as pd  
  
def test_pandas_read():  
    for i in range(1, 6):  
        sheet_name = "Sheet" + str(i)  
         # df = pd.read_excel('test_cases\\read_xls.xls', sheet_name)
        df = pd.read_excel('test_cases\\read_xlsx.xlsx', sheet_name)  
  
  
import numpy as np  
d = np.zeros([2000, 255])  
d += 65536  
df = pd.DataFrame(d)  
# writer = pd.ExcelWriter('test_cases\\write_xls.xls')
writer = pd.ExcelWriter('test_cases\\write_xlsx.xlsx')  
def test_pandas_write():  
    df.to_excel(writer, 'Sheet1')  
    df.to_excel(writer, 'Sheet2')  
    df.to_excel(writer, 'Sheet3')  
    df.to_excel(writer, 'Sheet4')  
    df.to_excel(writer, 'Sheet5')  
    writer.save()

这里与本篇文章无关

喜欢二次元动漫的小伙伴可以微信扫一扫关注一下哟,点赞关注,鼓励一下博主呦

Python读写excel库对比相关推荐

  1. 最全整理!Python 操作 Excel 库 xlrd与xlwt 常用操作详解!

    来源/早起Python 在之前的Python办公自动化系列文章中,我们已经相信介绍了openyxl.xlsxwriter等Python操作Excel库. 相信大家对于几个库的差异与使用场景有了一定的认 ...

  2. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

  3. 通过Python读写Excel,实现爬虫的两个方案

    目录 1.需求背景 2.代码实现 2.1.实现方法1 2.1.1.实现思路 2.1.2.代码演示 2.2.实现方法2 2.2.1.实现思路 2.2.2.代码演示 3.拓展知识 1.需求背景 表哥从事某 ...

  4. 使用python用什么软件-Python读写Excel表格,就是这么简单粗暴又好用

    Python读写Excel表格,就是这么简单粗暴又好用 2019-04-18 13:45:31 11点赞 107收藏 1评论 最近在做一些数据处理和计算的工作,因为数据是以.csv格式保存的,因此刚开 ...

  5. python简单代码编写-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel――xlrd 2.python写excel――xlwt 1.读excel数据,包括日期等数据 ...

  6. python读取excel表格-python读写Excel表格的实例代码(简单实用)

    安装两个库:pip install xlrd.pip install xlwt 1.python读excel--xlrd 2.python写excel--xlwt 1.读excel数据,包括日期等数据 ...

  7. .bin 文件用excel文件打开_用PYTHON读写excel文件

    1 实际案例 问题内容:数据格式为xls,xlsx,是一种常用的电子表格. 小学某班级成绩,记录在excel文件中: 姓名 语文 数学 外语 李磊 95 99 96 韩梅 98 100 93 张峰 9 ...

  8. 超实用的python技巧:python读写Excel表格的实例代码(简单实用)

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可 ...

  9. Python读写EXCEL文件常用方法大全

    前言 python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别,这里我主要介绍几个常用的方式. 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pa ...

最新文章

  1. Mysql Cluster 集群 windows版本
  2. 来聊聊COCO数据集上两大霸榜模型-CBNet和DetectoRS
  3. 红橙Darren视频笔记 OKHttp基本使用 对http框架进行封装 链式调用
  4. ZOJ 1015 弦图判定
  5. 想成为测试工程师,这7件事你必须先知道
  6. c语言中动态数组的实现
  7. 一个完整的汇编程序结构
  8. Java学习笔记1:Java中有关print、println、printf的用法和区别
  9. 计算机专业sci二区论文难吗,二区SCI论文要求比国内核心高吗
  10. 安卓Android百度输入法皮肤-疯狂码字的快乐-《Write 2022升级版》
  11. h5 数字变化_那些H5用到的技术(6)——数字滚动特效
  12. android exo解码问题,Android Exoplayer音频播放异常
  13. eclipse neno高级安装
  14. 几种你不知道的获取浙A牌照的方法
  15. 不确定性量化 (UQ) 可以显著提高预测准确性,在不确定的世界中获得最佳结果昆士兰大学Mike McKerns-中国学者网
  16. FreeRTOS学习笔记【二】——FreeRTOS 移植
  17. 三国志·吴书·贺齐等传
  18. DEDECMS采集完整流程
  19. 儒教与文化专制·《厚黑学全书》
  20. 雅可比矩阵 和 海森矩阵

热门文章

  1. 基于微信平台的“快递超市”设计
  2. 使用scrapy框架爬boss直聘
  3. (兔子繁殖问题)斐波那契数列:递归非递归解法
  4. 笔记本电脑usb供电不足的解决方法
  5. 关于app#启动页面#splash页面#开屏广告#的小结
  6. mysql like ‘%...%’ 慎用啊
  7. 如何在项目中搭建python接口自动化框架?
  8. 美国感叹:预测不断落空 真的不瞭解中国
  9. 电子产品节能迫在眉睫
  10. 阿里python开发规范手册_阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南...