热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python操作excel_详解Python操作Excel文件

点击上方“后端技术精选”,选择“置顶公众号”技术文章第一时间送达!前言本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法。常见库简

点击上方“后端技术精选”,选择“置顶公众号”

技术文章第一时间送达!

前言

本篇文章主要总结了一下利用python操作Excel文件的第三方库和方法。

常见库简介

1.xlrd

xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件。

地址:http://xlrd.readthedocs.io/en/latest/

  • xlrd支持.xls,.xlsx文件的读

  • 通过设置on_demand变量使open_workbook()函数只加载那些需要的sheet,从而节省时间和内存(该方法对.xlsx文件无效)。

  • xlrd.Book对象有一个unload_sheet方法,它将从内存中卸载工作表,由工作表索引或工作表名称指定(该方法对.xlsx文件无效)

2.xlwt

xlwt是一个用于将数据和格式化信息写入旧Excel文件的库(如.xls)。

地址:https://xlwt.readthedocs.io/en/latest/

  • xlwt支持.xls文件写。

3.xlutils

xlutils是一个处理Excel文件的库,依赖于xlrd和xlwt。

地址:http://xlutils.readthedocs.io/en/latest/

  • xlutils支持.xls文件。

  • 支持Excel操作。

4.xlwings

xlwings是一个可以实现从Excel调用Python,也可在python中调用Excel的库。

地址:http://docs.xlwings.org/en/stable/index.html

  • xlwings支持.xls读,支持.xlsx文件读写。

  • 支持Excel操作。

  • 支持VBA。

4、强大的转换器可以处理大部分数据类型,包括在两个方向上的numpy array和pandas DataFrame。

5.openpyxl

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

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

  • openpyxl支持.xlsx文件的读写。

  • 支持Excel操作。

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

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

6.xlsxwriter

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

地址:https://xlsxwriter.readthedocs.io/

  • xlswriter支持.xlsx文件的写。

  • 支持VBA。

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

7.win32com

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

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

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

  • 支持Excel操作。

8.DataNitro

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

地址:https://datanitro.com/docs/

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

  • 支持Excel操作。

  • 支持VBA。

  • 收费

9.pandas

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

地址:http://pandas.pydata.org/

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

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

78bc5f864b350282cc066c7eb96d8449.png

提醒及注意:

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

  • win32com 与 DataNitro 仅支持 windows 系统;

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

  • win32com 不是独立的扩展库,而是集成在其他库中,安装 pypiwin32 或者 pywin32 包即可使用;

  • DataNitro 是 Excel 的插件,安装需到官网下载。

基本功能:

由于设计目的不同,每个模块通常着重于某一方面功能,各有所长。

1.xlwings

可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。

2.openpyxl

简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点,缺点是对 VBA 支持的不够好。

3.pandas

数据处理是 pandas 的立身之本,Excel 作为 pandas 输入/输出数据的容器。

4.win32com

从命名上就可以看出,这是一个处理 windows 应用的扩展,Excel 只是该库能实现的一小部分功能。该库还支持 office 的众多操作。需要注意的是,该库不单独存在,可通过安装 pypiwin32 或者 pywin32 获取。

5.xlsxwriter

拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

6.DataNitro

作为插件内嵌到 Excel 中,可完全替代 VBA,在 Excel 中使用 python 脚本。既然被称为 Excel 中的 python,协同其他 python 库亦是小事一桩。然而,这是付费插件…

7.xlutils

基于 xlrd/xlwt,老牌 python 包,算是该领域的先驱,功能特点中规中矩,比较大的缺点是仅支持 xls 文件。

读写测试

测试用例

  • 用例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列的整数)。

测试结果

c9030da8fe9fa197447eb42ebbadc679.png

注:

  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胜出。

代码示例

最后,附上一些演示代码,大家可自行体会下不同模块的使用。

6.1 xlwings基本代码

import xlwings 

6.2 xlsxwriter基本代码

import xlsxwriter 

6.3 xlutils基本代码import xlrd #读取数据

import xlwt 

6.4 win32com基本代码

import win32com.client 

6.5 openpyxl基本代码

import openpyxl

6.6 DataNitro基本代码

#单一单元格赋值

openpyxl具体使用

1、 创建一个excel 文件,并写入不同类的内容

# -*- coding: utf-8 -*-

2、创建sheet

from openpyxl 

3、操作单元格

# -*- coding: utf-8 -*-

4、操作已存在的文件

# -*- coding: utf-8 -*-

5、操作批量的单元格

# -*- coding: utf-8 -*-

6、获取所有的行(列)对象:

# coding=utf-8

推荐阅读(点击即可跳转阅读)

1. SpringBoot内容聚合

2. 面试题内容聚合

3. 设计模式内容聚合

4. Mybatis内容聚合

5. 多线程内容聚合

cfbfca7b796a92471a1fffb9185eedec.png




推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了包的基础知识,包是一种模块,本质上是一个文件夹,与普通文件夹的区别在于包含一个init文件。包的作用是从文件夹级别组织代码,提高代码的维护性。当代码抽取到模块中后,如果模块较多,结构仍然混乱,可以使用包来组织代码。创建包的方法是右键新建Python包,使用方式与模块一样,使用import来导入包。init文件的使用是将文件夹变成一个模块的方法,通过执行init文件来导入包。一个包中通常包含多个模块。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • MATLAB函数重名问题解决方法及数据导入导出操作详解
    本文介绍了解决MATLAB函数重名的方法,并详细讲解了数据导入和导出的操作。包括使用菜单导入数据、在工作区直接新建变量、粘贴数据到.m文件或.txt文件并用load命令调用、使用save命令导出数据等方法。同时还介绍了使用dlmread函数调用数据的方法。通过本文的内容,读者可以更好地处理MATLAB中的函数重名问题,并掌握数据导入导出的各种操作。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
手机用户2502922477
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有