python的excel库_Python-Excel 模块哪家强?
0. 前言
从网页爬下来的大量数据需要清洗?
成堆的科学实验数据需要导入 Excel 进行分析?
有成堆的表格等待统计?
作为人生苦短的 Python 程序员,该如何优雅地操作 Excel?
得益于前人的辛勤劳作,Python 处理 Excel 已有很多现成的轮子,使用较多的有:
xlwings
openpyxl
pandas
win32com
xlsxwriter
DataNitro
xlutils
上次我们介绍了下 xlutils,不少读者留言表示有比它更好使的模块,于是我们又把另外几个都体验了一遍。
本文将从运行环境、文档操作、基本功能和性能等方面对以上模块进行一次粗浅的比较,供大家参考。
1. 环境配置
再好的模块,也需要在正确的 Python 版本以及 Excel 版本才可运行。
提醒及注意:xlutils 仅支持 xls 文件,即2003以下版本;
win32com 与 DataNitro 仅支持 windows 系统;
xlwings 安装成功后,如果运行提示报错“ImportError: no module named win32api”,请再安装 pypiwin32 或者 pywin32 包;
win32com 不是独立的扩展库,而是集成在其他库中,安装 pypiwin32 或者 pywin32 包即可使用;
DataNitro 是 Excel 的插件,安装需到官网下载。
2. 文档操作
虽然大家都是操作 Excel,但即使最基本的新建文件、修改文件、保存文件等功能,在不同的库中也存在差异。比如 xlsxwriter 并不支持打开或修改现有文件,xlwings 不支持对新建文件的命名,DataNitro 作为 Excel 插件需依托于软件本身,pandas 新建文档需要依赖其他库等等。
3. 基本功能
由于设计目的不同,每个模块通常着重于某一方面功能,各有所长。
xlwings
可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻松应对 Excel 数据处理工作。
openpyxl
简单易用,功能广泛,单元格格式/图片/表格/公式/筛选/批注/文件保护等等功能应有尽有,图表功能是其一大亮点,缺点是对 VBA 支持的不够好。
pandas
数据处理是 pandas 的立身之本,Excel 作为 pandas 输入/输出数据的容器。
win32com
从命名上就可以看出,这是一个处理 windows 应用的扩展,Excel 只是该库能实现的一小部分功能。该库还支持 office 的众多操作。需要注意的是,该库不单独存在,可通过安装 pypiwin32 或者 pywin32 获取。
xlsxwriter
拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。
DataNitro
作为插件内嵌到 Excel 中,可完全替代 VBA,在 Excel 中使用 python 脚本。既然被称为 Excel 中的 python,协同其他 python 库亦是小事一桩。然而,这是付费插件...
xlutils
基于 xlrd/xlwt,老牌 python 包,算是该领域的先驱,功能特点中规中矩,比较大的缺点是仅支持 xls 文件。
4.性能
我们对几个库做了最基本的写入和读取测试,分别使用不同库进行添加及读取 1000行 * 700列 数据操作,得到所用时间,重复操作取平均值。另外在不同的电脑配置,不同的环境下结果肯定会有出入,数据仅供参考。
注:xlutils 最多只能写入 256 列,即 1000*256,用时3.8秒,表现不错;
DataNitro 与 xlsxwriter 不能打开 Excel 文件。
5. 小结
通过以上的分析,相信大家对几个库都有了简单的了解。在编写文章的过程中,笔者也在思考各个库最适合的应用场景。不想使用 GUI 而又希望赋予 Excel 更多的功能,openpyxl 与 xlsxwriter,你可二者选其一;
需要进行科学计算,处理大量数据,建议 pandas+xlsxwriter 或者 pandas+openpyxl;
想要写 Excel 脚本,会 Python 但不会 VBA 的同学,可考虑 xlwings 或 DataNitro;
至于 win32com,不管是功能还是性能都很强大,有 windows 编程经验的同学可以使用。不过它相当于是 windows COM 的封装,自身并没有很完善的文档,新手使用起来略有些痛苦。
你可根据自己的需求和生产环境,选择合适的 Python-Excel 模块。
6. 代码示例
最后,附上一些演示代码,大家可自行体会下不同模块的使用。
6.1 xlwings基本代码
import xlwings as xw
#连接到excel
workbook = xw.Book(r'path/myexcel.xlsx')#连接excel文件
#连接到指定单元格
data_range = workbook.sheets('Sheet1').range('A1')
#写入数据
data_range.value = [1,2,3]
#保存
workbook.save()
6.2 xlsxwriter基本代码
import xlsxwriter as xw
#新建excel
workbook = xw.Workbook('myexcel.xlsx')
#新建工作薄
worksheet = workbook.add_worksheet()
#写入数据
worksheet.write('A1',1)
#关闭保存
workbook.close()
6.3 xlutils基本代码import xlrd #读取数据
import xlwt #写入数据
import xlutils #操作excel
#----xlrd库
#打开excel文件
workbook = xlrd.open_workbook('myexcel.xls')
#获取表单
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,'data')
#保存文件
wb.save('myexcel.xls')
#----xlutils库
#打开excel文件
book = xlrd.open_workbook('myexcel.xls')
#复制一份
new_book = xlutils.copy(book)
#拿到工作薄
worksheet = new_book.getsheet(0)
#写入数据
worksheet.write(0,0,'new data')
#保存
new_book.save()
6.4 win32com基本代码
import win32com.client as wc
#启动Excel应用
excel_app = wc.Dispatch('Excel.Application')
#连接excel
workbook = excel_app.Workbooks.Open(r'e:/myexcel.xlsx' )
#写入数据
workbook.Worksheets('Sheet1').Cells(1,1).Value = 'data'
#关闭并保存
workbook.SaveAs('newexcel.xlsx')
excel_app.Application.Quit()
6.5 openpyxl基本代码
import openpyxl
# 新建文件
workbook = openpyxl.Workbook()
# 写入文件
sheet = workbook.activesheet['A1']='data'
# 保存文件
workbook.save('test.xlsx')
6.6 DataNitro基本代码
#单一单元格赋值
Cell('A1').value = 'data'
#单元区域赋值
CellRange('A1:B2').value = 'data'
其他文章及回答:
Crossin的编程教室
微信ID:crossincode
python的excel库_Python-Excel 模块哪家强?相关推荐
- python modbus tk 库_python modbus_tk模块学习笔记(rtu slaver例程)
GIT地址:https://github.com/ljean/modbus-tk 找到modbus rtu slaver 例程 用宝塔将例程复制到centos目录 #!/usr/bin/env pyt ...
- python做cae库_python常用模块-OS模块
importos__file__:指当前文件,带有路径的 D:/svn_auto3/test_case1/test1.py(注意这里的斜杠,和abspath的区别就是这里)#路径操作 >> ...
- python excel 模块 性能_【xlwings1】Python-Excel 模块哪家强
0. 前言 从网页爬下来的大量数据需要清洗? 成堆的科学实验数据需要导入 Excel 进行分析? 有成堆的表格等待统计? 作为人生苦短的 Python 程序员,该如何优雅地操作 Excel? 得益于前 ...
- python的excell库_Python中使用第三方库xlrd来写入Excel文件示例
继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...
- 用python的xlsxwriter库写EXCEL大文件时,内存占用过高
用python的xlsxwriter库创建较大的Excel文件时,会占用过高的内存.很容易导致程序异常结束. 设置constant_memory属性后,就可以避免这个问题. 例: workbook = ...
- python如何扩展库_python的常用扩展库以及使用方式
一.常用库(标准库+扩展库) 标准库 说明 math 数学模块 random 随机数以及随机化相关模块 datetime 日期时间模块 collections 包含更多扩展性序列的模块 functo ...
- python xlutils和openpyxl哪个好_Python-Excel 模块哪家强?
前言 从网页爬下来的大量数据需要excel清洗 成堆的科学实验数据需要导入excel进行分析 作为一名面向逼格的Python程序员 该如何合理而又优雅的选择生产力工具呢? 得益于辛勤劳作的python ...
- python安装random库_python 库安装方法及常用库
python库安装方法: 方法一:setpu.py 1.下载库压缩包,解压,记录下路径:*:/**/--/ 2.运行cmd,切换到*:/**/--/目录下 3.运行setup.py build 4.然 ...
- python升级第三方库_python一键升级所有第三方库
import pip from subprocess import call for dist in pip.get_installed_distributions(): call("pip ...
最新文章
- Git的学习与使用(五)——Git 创建仓库
- OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)
- 7-2 银行家算法--申请资源 (30 分)
- c++基础语句(条件判断)
- 原生 js 轮播图(8)
- linux内核按键驱动,嵌入式Linux按键驱动框架
- mysql变红_数据库变成红色紧急
- 小程序开发——配置https后台接口访问
- PDF是什么格式?如何编辑PDF文件?
- LC-3 汇编语言 指令集
- 马老师的996,不是鸡汤,是​我的人生信条!
- Vs2008调试慢的问题
- chatter个人理解
- Decorator装饰者【C++实现】
- spyder运行时闪退解决办法:
- maven学习笔记【二】私服Nexus
- 北京外国语大学计算机语言学专业排名,北京外国语大学专业排名及介绍 哪些专业最好...
- 作为一名网络工程师,分享下IT从业经验!
- bridge 的运用和数码照片的处理
- Stata: 断点回归 (RDD) 中的平滑性检验
热门文章
- C++运算符与类型转换
- 新手如何准确的控制油门
- store_coding_state (cs_cm)的作用
- linux 安装 maven 、解决:bash: mvn: command not found
- 解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) ...
- IntelliJ IDEA 中 右键新建时,选项没有Java class的解决方法和具体解释
- ResourceDictionary主题资源替换(二) :编译期间,替换主题资源
- docker:安装mysql多个
- C库函数qsort七种使用方法示例
- Sharepoint学习笔记—ECM系列--根据位置设置的默认元数据值(Location-Based Metadata Defaults)...