在之前的办公自动化系列文章中,我已经对Python操作Excel的几个常用库openpyxl、xlrd/xlwt、xlwings、xlsxwriter等进行了详细的讲解。

为了进一步带大家了解各个库的异同,从而在不同场景下可以灵活使用,本文将横向比较7个可以操作 Excel 文件的常用模块,在比较各模块常用操作的同时进行巩固学习!

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

xlwings 能够非常方便的读写 Excel 文件中的数据,并且能够进行单元格格式的修改

XlsxWriter 是一个用来写 .xlsx 文件格式的模块。它可以用来写文本、数字、公式并支持单元格格式化、图片、图表、文档配置、自动过滤等特性。但不能用来读取和修改 Excel 文件

openpyxl 通过 工作簿 “workbook - 工作表 sheet - 单元格 cell” 的模式对 .xlsx 文件进行读、写、改,并且可以调整样式

pandas 大家都不陌生,是进行数据处理和分析的强大模块,有时也可以用来自动化处理Excel”

如果你懒得看详细的对比过程,可以直接看最后的总结图,然后拉到文末收藏点赞就算学会了

一、安装

7个模块均为pip 进行安装:pip install xlrd

pip install xlwt

pip install xlutils

pip install xlwings

pip install XlsxWriter

pip install openpyxl

pip install pandas

二、模块导入

多数模块可以直接通过名字导入,有些模块约定俗称会使用缩写:import xlrd

import xlwt

import xlwings as xw

import xlsxwriter

import openpyxl

import pandas as pd

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

三、读取 Excel 文件

3.1 获取文件

并不是所有7个模块都可以读取 Excel 文件,而即使能读取Excel文件也要分不同后缀名进行讨论,具体如下:“xlwt、xlutils、XlsxWriter 不能读取文件

xlrd 可以读取 .xls 和 .xlsx 文件

xlwings 可以读取 .xls 和 .xlsx 文件

openpyxl 可以读取 .xlsx 文件

pandas 可以读取 .xls 和 .xlsx 文件”

下面使用两个大小均为 10MB 的 .xls 和 .xlsx 文件进行测试:xls_path = r'C:\xxx\Desktop\test.xls'

xlsx_path = r'C:\xxx\Desktop\test.xlsx'

3.1.1 xlrd 读取文件

xlrd 可以读取 .xls 和 .xlsx 文件xls = xlrd.open_workbook(xls_path)

xlsx = xlrd.open_workbook(xlsx_path)

3.1.2 xlwings 读取文件

xlwings 直接对接的是 apps,也就是 Excel 应用程序,然后才是工作簿 books 和工作表 sheets,xlwings 需要安装有 Excel 应用程序的环境xlwings 可以读取 .xls 和 .xlsx 文件app = xw.App(visible=True, add_book=False) # 程序可见,只打开不新建工作薄

app.display_alerts = False # 警告关闭

app.screen_updating = False # 屏幕更新关闭

# wb = app.books.open(xls_path)

wb = app.books.open(xlsx_path)

wb.save() # 保存文件

wb.close() # 关闭文件

app.quit() # 关闭程序

3.1.3 openpyxl 读取文件

openpyxl 可以读取 .xlsx 文件wb = openpyxl.load_workbook(xlsx_path)

如果读取 .xls 文件会报错:wb = openpyxl.load_workbook(xls_path)

openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.

3.1.4 pandas 读取文件

pandas 可以读取 .xls 和 .xlsx 文件xls = pd.read_excel(xls_path, sheet_name='Sheet1')

xlsx = pd.read_excel(xlsx_path, sheet_name='Sheet1')

接下来比较四个模块在同一配置电脑下读取 10MB .xlsx 文件的时间(运行3次求平均值),所用代码为:import time

import xxx

time_start = time.time()

xxx

time_end = time.time()

print('time cost: ', time_end-time_start, 's')

最后测试的结果是,xlwings 读取 10MB 文件最快,xlrd 次之,openpyxl 最慢(因电脑而异,结果仅供参考)

读入 Excel 文件部分的表格总结如下:

3.2 获取工作表

针对上述4个可以读取 Excel 文件的模块,进一步讨论其获取工作表 sheet 的方式

3.2.1 xlrd 获取工作表

可以通过 sheet 名查找:sheet = xlsx.sheet_by_name("Sheet1")

也可通过索引查找:sheet = xlsx.sheet_by_index(0)

3.2.2 xlwings 获取工作表

xlwings 的工作表分为活动工作表以及指定工作簿下的特定工作表:sheet = xw.sheets.active  # 在活动工作簿

sheet = wb.sheets.active  # 在特定工作簿

3.2.3 openpyxl 获取工作表

.active 方法默认获取工作簿的第一张工作表sheet = wb.active

另外也可以通过工作表名指定获取工作表:sheet = wb['Sheet1']

3.2.4 pandas 获取工作表

单独获取工作表完全没有 pandas 什么事情,因为读取文件的同时已经且必须指定工作表才能读取:xlsx = pd.read_excel(xlsx_path, sheet_name='Sheet1')

四、创建 Excel 文件

简单总结创建 Excel 文件的情况:“xlrd、xlutils 不能创建 Excel 文件

xlwt 只能创建 .xls 文件,不能创建 .xlsx 文件

xlwings可以创建 .xls 和 .xlsx 文件

XlsxWriter 可以创建 .xlsx 文件

openpyxl 可以创建 .xls 和 .xlsx 文件

pandas 没有创建 Excel 的概念,但可以存储时产生 .xls 或 .xlsx 文件”

4.1 xlwt 创建文件

xlwt 只能创建 .xls 文件,不能创建 .xlsx 文件xls = xlwt.Workbook(encoding= 'ascii')

# 创建新的sheet表

worksheet = xls.add_sheet("Sheet1")

4.2 xlwings 创建文件

xlwings可以创建 .xls 和 .xlsx 文件,只需要最后保存时写清楚后缀即可。使用如下命令:wb = app.books.add()

无论是新建还是打开都需要保存工作簿、关闭工作簿、关闭程序,即:

用python实现excel 14个常用操作,用Python 操作 Excel,这篇文章别错过了!(超全总结)...相关推荐

  1. java与python难度对比_Python和Java的区别,看完这篇文章你就清楚啦

    众所周知,在数不清的编程语言中Java自诞生之日起长盛不衰,可谓是神话般的存在.随着人工智能时代的到来,Python迅速席卷全球,作为当下最热门的编程语言,因其简单实用且应用场景广泛备受青睐. 一个是 ...

  2. 用python实现excel 14个常用操作_用Python实现excel 14个常用操作

    自从学了Python后就逼迫自己不用Excel,所有操作用Python实现.目的是巩固Python,与增强数据处理能力.这也是我写这篇文章的初衷.废话不说了,直接进入正题. 数据是网上找到的销售数据, ...

  3. python处理excel的方法有哪些_用Python实现excel 14个常用操作

    自从学了Python后就逼迫自己不用Excel,所有操作用Python实现.目的是巩固Python,与增强数据处理能力.这也是我写这篇文章的初衷.废话不说了,直接进入正题. 数据是网上找到的销售数据, ...

  4. 用Python 操作 Excel,这篇文章别错过了!(超全总结)

    在之前的办公自动化系列文章中,我已经对Python操作Excel的几个常用库openpyxl.xlrd/xlwt.xlwings.xlsxwriter等进行了详细的讲解. 为了进一步带大家了解各个库的 ...

  5. linux 怎么用命令行运行python文件_Linux命令行常用命令及python应用

    通常用户和电脑交互是通过图形用户界面(GUI), 更快捷的方式是通过命令行界面(Command line interface), 通过在终端输入命令来实现文件夹和程序间的切换.Linux 和OS X都 ...

  6. 用Python自动化操作PPT,看完这篇文章就够了!

    作者:超级大洋葱806 https://tangxing.blog.csdn.net/article/details/109568830 大家好,我是小z 今天给大家分享一波Python自动化操作PP ...

  7. Linux 需要的常用操作,你只差这篇文章

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:为什么魂斗罗只有 128 KB却可以实现那么长的剧情?个人原创+1博客:点击前往,查看更多 作者:马小邱 链接: ...

  8. 滚雪球学 Python 之闭包操作,本系列第 8 篇文章

    橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起 Be More Pythonic. 滚雪球学 Python 第二轮 已完成的文章清单 八.闭包的知识点 8.1 闭包的基本操作 8.2 闭包作用 ...

  9. 如何使用excel批量导入数据到数据库?看这一篇就够了!超详细

    应用场景 当我们遇到要批量新增数据库条数的时候 1.你可以写一个接口去用excel去导入,可以自动化,但是前提是你知道你要新增的表和流程才可以 2.可以用excel直接进行数据库导入 excel导入数 ...

最新文章

  1. Java模拟ATM运行过程(第一版)
  2. LoaderManager使用详解(三)---实现Loaders
  3. HTML5中figure标签使用实例
  4. Idea根据表自动生成实体
  5. [并发编程] - 操作系统底层工作原理
  6. Deepin 15.7安装教程
  7. 如何评估序列推荐模型?
  8. 编译QT出错 Basic XLib functionality test failed!
  9. 剑指 Offer 27. 二叉树的镜像【无取巧解法,易于理解!】
  10. java读取gxk文件,Java中常见的IO流及其使用
  11. [html] HTML5如何监听video的全屏和退出全屏?
  12. linux ntfs硬盘自动挂,linux下查看所有硬盘分区+挂接NTFS磁盘/硬盘+自动挂接硬盘方法...
  13. CMD命令之BAT脚本路径信息
  14. Apache HttpClient POST数据(https)
  15. kernel——make menuconfig的实现原理【转】
  16. 大学物理实验习题+答案/缓慢更新
  17. 【神器】截图+贴图工具 Snipaste
  18. CAD机械制图入门知识
  19. 大数据平台以及一些核心组件介绍
  20. POJ 2112 Optimal Milking 最优挤奶方案 Floyd算法+二分查找+最大流

热门文章

  1. 实践是检验真理的唯一标准——《精益创业实战》让你的成功飞起来
  2. 小陈的Java学习心得
  3. Tableau各版本更新情况
  4. 机器人课程对孩子的用意
  5. 起泡法排序,从小到大顺序排列
  6. UVa:10074 Take the Land
  7. 京东数据中心主要基础设施系统(一)
  8. ArcToolbox的运行结果发布为GP服务
  9. java开发简单解释器,实现一个简单的解释器(5)
  10. 华为hcie中QOS 流量整形 双速率的概念-ielab实验室