前言

从网页爬下来的大量数据需要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 模块哪家强?相关推荐

  1. Python杀死Excel?众多模块哪家强

    大家可能可能会面临这个问题: 成堆的科学实验数据需要导入 Excel 进行分析 成堆的销售数据表格等待统计 成堆的商品数据等待分析 作为人生苦短的 Python 程序员,该如何优雅地操作 Excel? ...

  2. python字符串函数的find方法_Python string模块 字符串函数方法操作教程

    我们在Python编程过程中,经常会处理一些字符串的相关操作,例如:查找.替换.分隔.截取以及英文的大小写转换等,这个时候Python程序员首选的一定是 string模块 . 一.string模块简单 ...

  3. python excel 模块 性能_【xlwings1】Python-Excel 模块哪家强

    0. 前言 从网页爬下来的大量数据需要清洗? 成堆的科学实验数据需要导入 Excel 进行分析? 有成堆的表格等待统计? 作为人生苦短的 Python 程序员,该如何优雅地操作 Excel? 得益于前 ...

  4. python的excel库_Python-Excel 模块哪家强?

    0. 前言 从网页爬下来的大量数据需要清洗? 成堆的科学实验数据需要导入 Excel 进行分析? 有成堆的表格等待统计? 作为人生苦短的 Python 程序员,该如何优雅地操作 Excel? 得益于前 ...

  5. python xlsx 样式 谷歌开源 样式_python XlsxWriter模块创建aexcel表格

    安装使用pip install XlsxWriter来安装,Xlsxwriter用来创建excel表格,功能很强大,下面具体介绍: 1.简单使用excel的实例: #coding:utf-8 impo ...

  6. python time localtimeq获取准确时间_Python时间模块datetime、time、calendar的使用方法

    本文简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用,希望这篇文章对于学习Python的朋友们有所帮助. 首先就是模块的调用,很多 ...

  7. python怎么画两幅图_python matplotlib模块: Subplots(在同一个figure里绘制多个图)

    我们使用subplot可以实现在同一个figure对象下绘制多个图像:figure对象: image.png 每一个这样的图都包含唯一一个figure对象,而一个figure对象里面可以包含多个axe ...

  8. python合并word表格单元格_python docx模块读取word表格遇到合并单元格时的处理

    python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表格遇到合并单元格时的处理 python docx模块读取word表 遇到合并单元格时的处理 通 ...

  9. 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 ...

最新文章

  1. bazel编译tensorflow 生成libtensorflow_inference.so 和 libandroid_tensorflow_inference_java.jar
  2. mybatis 代码生成器_spring Boot手把手教学(4): mybatis-plus 代码生成器,自动帮你生成代码
  3. CTFshow php特性 web109
  4. 线程之售票系统pthread_mutex,_lock,_unlock
  5. mac下配置android sdk环境 安装eclipse
  6. C# 结合 PInvoke 对接 IP 摄像头的笔记
  7. Java教程:Java选择结构和循环结构的总结
  8. 详解没有dSYM文件 如何解析iOS崩溃日志
  9. Mac下常用快捷键(转)
  10. 我的世界java版启动器更新_我的世界:统一启动器发布、java版更新1.16.5,本周mc新闻大事件...
  11. 数学分析—集合与映射
  12. MATLAB下载_MATLAB中文版下载
  13. 笔记本计算机bios设置,笔记本怎么进入bios设置【方法步骤】
  14. python 输出 百分比
  15. 移动硬盘装ubuntu
  16. 推荐综述博客网址马克
  17. libpq-fe.h:没有那个文件或目录
  18. SAP-MM知识精解-批次管理(03-02)-批次主数据之视图介绍
  19. 关于“与google服务器通信时出现问题“
  20. ie浏览器的兼容性问题总结

热门文章

  1. python中pygal_在Python中导入pygal查看直方图
  2. 数据逻辑讨论计算机,1绪论信息技术算法与程序福建教师招考.ppt
  3. decode函数_Python 内置函数总一
  4. gpu tensorflow 怎么看是否安装成功_安装keras模块以及使用GPU加速
  5. java 删除桌面快捷方式_能否在桌面创建快捷方式运行java程序?
  6. ncbi查找目的基因序列_NCBI gene: 基因相关信息查询
  7. 不安装oracle使用exp命令
  8. Description Resource Path Location Type Project configuration is not up-to-date with pom.xml. Select
  9. html5声明utf-8,HTML5中的SVG – 什么时候是XML声明`?xml version =“1.0”encoding =“UTF-8”?`需要吗?...
  10. android检测是否跳出应用程序,android – 检测应用程序何时打开/恢复