python xlutils和openpyxl哪个好_Python-Excel 模块哪家强?
前言
从网页爬下来的大量数据需要excel清洗
成堆的科学实验数据需要导入excel进行分析
作为一名面向逼格的Python程序员
该如何合理而又优雅的选择生产力工具呢?
得益于辛勤劳作的python大神们,处理excel已经有大量python包,主流代表有:
xlutils:结合xlrd/xlwt,老牌python包,需要注意的是你必须同时安装这三个库
面对形形色色的扩展包,有时候会感到困惑,到底哪个包才是最适合自己的呢?
本文将从配置环境、文档操作、基本功能等方面比较以上扩展,让您能结合自己的生产环境,选择最适合自己的Excel操作库,同时自信的对其他库:你是个好扩展,可我们不合适!
下面,我们通过多方面的比较,让您对这些扩展有一个基础的了解。
1.环境配置
再好的模块,也需要在正确的 Python 版本以及 Excel 版本才可运行。
Paste_Image.png
所有库都支持Python2和python3。
需要注意的是Xlutils仅支持xls文件,即2003以下版本。同时win32com与DataNitro仅支持windows
2.文档操作
由于设计模式的不同,导致基本的新建文件、修改文件、保存文件等功能在不同的库中存在着一定差异,比如xlsxwriter并不支持打开或修改现有文件,xlwings不支持对新建文件的命名等等,DataNitro作为excel插件依托于excel本身的操作。详见下图
Paste_Image.png
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列 数据操作,得到所用时间,重复操作取平均值。另外在不同的电脑配置,不同的环境下结果肯定会有出入,数据仅供参考。
Paste_Image.png
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.wirte('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']='A1'
# 保存文件
workbook.save('test.xlsx')
欢迎加入 Crossin的编程教室
crossincode.com
新手入门QQ群:522415386
微信请加 crossin11 留言入群(新手/进阶)
python xlutils和openpyxl哪个好_Python-Excel 模块哪家强?相关推荐
- Python杀死Excel?众多模块哪家强
大家可能可能会面临这个问题: 成堆的科学实验数据需要导入 Excel 进行分析 成堆的销售数据表格等待统计 成堆的商品数据等待分析 作为人生苦短的 Python 程序员,该如何优雅地操作 Excel? ...
- python字符串函数的find方法_Python string模块 字符串函数方法操作教程
我们在Python编程过程中,经常会处理一些字符串的相关操作,例如:查找.替换.分隔.截取以及英文的大小写转换等,这个时候Python程序员首选的一定是 string模块 . 一.string模块简单 ...
- python excel 模块 性能_【xlwings1】Python-Excel 模块哪家强
0. 前言 从网页爬下来的大量数据需要清洗? 成堆的科学实验数据需要导入 Excel 进行分析? 有成堆的表格等待统计? 作为人生苦短的 Python 程序员,该如何优雅地操作 Excel? 得益于前 ...
- python的excel库_Python-Excel 模块哪家强?
0. 前言 从网页爬下来的大量数据需要清洗? 成堆的科学实验数据需要导入 Excel 进行分析? 有成堆的表格等待统计? 作为人生苦短的 Python 程序员,该如何优雅地操作 Excel? 得益于前 ...
- python xlsx 样式 谷歌开源 样式_python XlsxWriter模块创建aexcel表格
安装使用pip install XlsxWriter来安装,Xlsxwriter用来创建excel表格,功能很强大,下面具体介绍: 1.简单使用excel的实例: #coding:utf-8 impo ...
- python time localtimeq获取准确时间_Python时间模块datetime、time、calendar的使用方法
本文简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用,希望这篇文章对于学习Python的朋友们有所帮助. 首先就是模块的调用,很多 ...
- python怎么画两幅图_python matplotlib模块: Subplots(在同一个figure里绘制多个图)
我们使用subplot可以实现在同一个figure对象下绘制多个图像:figure对象: image.png 每一个这样的图都包含唯一一个figure对象,而一个figure对象里面可以包含多个axe ...
- python合并word表格单元格_python docx模块读取word表格遇到合并单元格时的处理
python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表 遇到合并单元格时的处理 通 ...
- python os.path.splitext()的用法_Python常用模块之os.path
os.path.abspath(path) 输入相对路径,返回绝对路径 Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1 ...
最新文章
- bazel编译tensorflow 生成libtensorflow_inference.so 和 libandroid_tensorflow_inference_java.jar
- mybatis 代码生成器_spring Boot手把手教学(4): mybatis-plus 代码生成器,自动帮你生成代码
- CTFshow php特性 web109
- 线程之售票系统pthread_mutex,_lock,_unlock
- mac下配置android sdk环境 安装eclipse
- C# 结合 PInvoke 对接 IP 摄像头的笔记
- Java教程:Java选择结构和循环结构的总结
- 详解没有dSYM文件 如何解析iOS崩溃日志
- Mac下常用快捷键(转)
- 我的世界java版启动器更新_我的世界:统一启动器发布、java版更新1.16.5,本周mc新闻大事件...
- 数学分析—集合与映射
- MATLAB下载_MATLAB中文版下载
- 笔记本计算机bios设置,笔记本怎么进入bios设置【方法步骤】
- python 输出 百分比
- 移动硬盘装ubuntu
- 推荐综述博客网址马克
- libpq-fe.h:没有那个文件或目录
- SAP-MM知识精解-批次管理(03-02)-批次主数据之视图介绍
- 关于“与google服务器通信时出现问题“
- ie浏览器的兼容性问题总结
热门文章
- python中pygal_在Python中导入pygal查看直方图
- 数据逻辑讨论计算机,1绪论信息技术算法与程序福建教师招考.ppt
- decode函数_Python 内置函数总一
- gpu tensorflow 怎么看是否安装成功_安装keras模块以及使用GPU加速
- java 删除桌面快捷方式_能否在桌面创建快捷方式运行java程序?
- ncbi查找目的基因序列_NCBI gene: 基因相关信息查询
- 不安装oracle使用exp命令
- Description Resource	Path Location Type Project configuration is not up-to-date with pom.xml. Select
- html5声明utf-8,HTML5中的SVG – 什么时候是XML声明`?xml version =“1.0”encoding =“UTF-8”?`需要吗?...
- android检测是否跳出应用程序,android – 检测应用程序何时打开/恢复