python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!

f85785e29c1ad232d5276268e8746195.png

openpyxl

xlrd/xlwt

xlwings

xlsxwriter

了解各个库的异同,从而在不同场景下可以灵活使用

首先让我们来整体把握下不同库的特点

xlrd

xlwt

xlutils

.xls

xlwt

.xls

xlrd

.xls

xlutils

xlrd

xlwt

.xls

xlrd

xlwt

xlutils

xlwings

XlsxWriter

.xlsx

openpyxl

.xlsx

pandas

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

72b574701c7ff6b4851db7ee29d69833.png

非标准库

pip

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

import

import

import

as

import

import

import

as

xlutils

xlrd

xlwt

xlrd

.xls

xlwt

.xls

xlutils

xlrd

xlwt

copy

import

3.1 获取文件

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

xlwt

xlutils

XlsxWriter

xlrd

.xls

.xlsx

xlwings

.xls

.xlsx

openpyxl

.xlsx

pandas

.xls

.xlsx

.xls

.xlsx

r'C:\xxx\Desktop\test.xls'

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

xlrd

xlrd

.xls

.xlsx

xlwings

xlwings

xlwings

xlwings

.xls

.xlsx

True

False

# 程序可见,只打开不新建工作薄

False

# 警告关闭

False

# 屏幕更新关闭

# wb = app.books.open(xls_path)

# 保存文件

# 关闭文件

# 关闭程序

openpyxl

openpyxl

.xlsx

.xls

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.

pandas

pandas

.xls

.xlsx

'Sheet1'

'Sheet1'

.xlsx

import

import

'time cost: '

's'

xlwings

xlrd

openpyxl

a323c30e1433aab93dc3bdf60c211b03.png

3.2 获取工作表

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

xlrd

可以通过 sheet 名查找:

"Sheet1"

也可通过索引查找:

0

xlwings

xlwings

# 在活动工作簿

# 在特定工作簿

openpyxl

.active

另外也可以通过工作表名指定获取工作表:

'Sheet1'

pandas

pandas

'Sheet1'

简单总结创建 Excel 文件的情况:

xlrd

xlutils

xlwt

.xls

.xlsx

xlwings

.xls

.xlsx

XlsxWriter

.xlsx

openpyxl

.xls

.xlsx

pandas

.xls

.xlsx

xlwt

xlwt

.xls

.xlsx

'ascii'

# 创建新的sheet表

"Sheet1"

xlwings

xlwings

.xls

.xlsx

保存工作簿、关闭工作簿、关闭程序

r'\new_practice.xlsx'

XlsxWriter

XlsxWriter

.xlsx

# 添加工作表

'Sheet1'

openpyxl

openpyxl

.xls

.xlsx

# 新工作簿中指定即创建工作表

pandas

pandas

pandas

.to_excel

.xls

.xlsx

r'C:\xxx\test1.xlsx'

简单总结保存 Excel 文件的情况:

xlrd

xlwt

.xls

xlutils

xlrd

xlwt

.xls

xlwings

.xls

.xlsx

XlsxWriter

.xlsx

openpyxl

.xlsx

pandas

.xls

.xlsx

xlwt

xlwt

.xls

# xls = xlwt.Workbook(encoding= 'ascii')

# worksheet = xls.add_sheet("Sheet1")

"new_table.xls"

xlutils

xlutils

xlrd

xlwt

.xls

# xls_path = r'C:\xxxx\test.xls'

# xls = xlrd.open_workbook(xls_path)

'new_text.xls'

xlwings

xlwings

.xls

.xlsx

# wb = app.books.open(xls_path)

# 保存文件

# 关闭文件

# 关闭程序

XlsxWriter

XlsxWriter

.xlsx

.close

# xlsx = xlsxwriter.Workbook()

# sheet = xlsx .add_worksheet('Sheet1')

openoyxl

openpyxl

.xlsx

# wb = openpyxl.load_workbook(xlsx_path)

# wb = Workbook()

# sheet = wb.active

'new_test.xlsx'

pandas

pandas

.xls

.xlsx

1

2

3

1

2

4

r'C:\xxxx\test1.xls'

r'C:\xxxx\test2.xlsx'

xlrd

xlwings

openpyxl

pandas

xlutils

.xls

xlrd

xlrd

xlutils

xlutils

xlrd

xlrd

xlwt

# xls = xlrd.open_workbook(xls_path)

# sheet = xlsx.sheet_by_name("Sheet1")

4

6

# 第5行第7列的单元格

4

6

for

in

xlwings

# app = xw.App(visible=True, add_book=False)

# app.display_alerts = False

# app.screen_updating = False

# wb = app.books.open(xls_path)

# sheet = wb.sheets.active

# 获取单个单元格的值

'A1'

# 获取横向或纵向多个单元格的值,返回列表

'A1:A3'

# 获取给定范围内多个单元格的值,返回嵌套列表,按行为列表

'A1:C4'

# 获取单个单元格的值

'A1'

# 获取横向或纵向多个单元格的值,返回列表

'A1:A3'

# 获取给定范围内多个单元格的值,返回嵌套列表,按行为列表

'A1:C4'

openpyxl

# wb = openpyxl.load_workbook(xlsx_path)

# wb = Workbook()

# sheet = wb.active

# 一、指定坐标范围的值

'A1:B5'

# 二、指定列的值

'A'

'A:C'

# 三、指定行的值

5

5

7

# 获取单元格的值

for

in

pandas

pandas

pandas

.iloc()

.loc()

.ix()

0

1

1

'b'

'a'

'a'

# 有些版本取消了ix,可以用iat

还是先简单总结对 Excel 文件写入数据的情况:

xlrd

xlwt

xlutils

xlwt

xlwings

XlsxWriter

openpyxl

pandas

xlwt

xlutils

# xls = xlrd.open_workbook(xls_path)

# xls_xlutils = xlutils.copy.copy(xls)

# sheet = xls_xlutils.sheet_by_name("Sheet1")

# value = sheet.cell_value(4, 6)

# print(value)

4

6

"新内容"

xlwings

# app = xw.App(visible=True, add_book=False)

# app.display_alerts = False

# app.screen_updating = False

# wb = app.books.open(xls_path)

# sheet = wb.sheets.active

# 写入 1 个单元格

'A2'

'大明'

# 一行或一列写入多个单元格

# 横向写入A1:C1

'A1'

1

2

3

# 纵向写入A1:A3

'A1'

True

1

2

3

# 写入范围内多个单元格

'A1'

'table'

1

2

3

4

5

6

XlsxWriter

new_format

# xlsx = xlsxwriter.Workbook()

# sheet = xlsx .add_worksheet('Sheet1')

# 一、写入单个单元格

# A1:从A1单元格开始插入数据,按行插入

'A1'

# A1:从A1单元格开始插入数据,按列插入

'A1'

openpyxl

# wb = openpyxl.load_workbook(xlsx_path)

# wb = Workbook()

# sheet = wb.active

# 一、写入单元格

'A1'

'业务需求'

# 二、写入一行或多行数据

1

2

3

1

2

3

4

5

6

依旧简单总结对 Excel 文件样式调整的情况:

xlrd

xlutils

xlutils

xlwt

xlwt

xlwings

XlsxWriter

openpyxl

pandas

xlwt

xlwt

# 字体部分

# 初始化样式

# 为样式创建字体

'Times New Roman'

#字体

True

#加粗

True

#下划线

True

#斜体

# 设置样式

# 使用样式

4

6

"新内容1"

# 边框部分

# 设置线型

# 设置样色

0x40

0x40

0x40

0x40

#

# 使用样式

5

8

"新内容2"

xlwings

xlwings

# 获取颜色

'C1'

# 设置颜色

'C1'

255

0

120

# 清除颜色

'C1'

None

8.3 XlsxWriter 调整样式

XlsxWriter

'bold'

True

# 字体加粗

'border'

1

# 单元格边框宽度

'align'

'left'

# 水平对齐方式

'valign'

'vcenter'

# 垂直对齐方式

'fg_color'

'#F4B084'

# 单元格背景颜色

'text_wrap'

True

# 是否自动换行

8.4 openpyxl 调整样式

openpyxl

# 字体样式

from

import

'A1'

'Arial'

12

True

True

'FF0000'

# 段落对齐

from

import

'B2'

'center'

'center'

45

True

# 边框样式

from

import

'B2'

'thin'

'FF0000'

'dashed'

简单总结对 Excel 文件插入图片的情况:

xlrd

xlutils

xlutils

xlwt

xlwt

.bmp

xlwings

XlsxWriter

openpyxl

pandas

xlwt

xlwt

.bmp

"test.bmp"

2

3

2

2

0.5

0.5

insert_bitmap(img, x, y, x1, y1, scale_x, scale_y)

img

x

y

x1 y1

scale_x scale_y

xlwings

xlwings

r'C:\\xxx.jpg'

# 也可以给定位置插入

r'C:\\xxx.jpg'

'A2'

'A2'

100

100

9.3 XlsxWriter 插入图片

第一个参数是插入的起始单元格,第二个参数是图片文件的绝对路径

'A1'

r'C:\\xxx.jpg'

9.4 openpyxl 插入图片

openpyxl

from

import

'test.jpg'

180

360

# 设置图片的宽和高

'A2'

# 往A2单元格插入图片

以上就是根据不同 Python 模块,对常见的 Excel 操作进行对比的全部内容,最终结果汇总如下表所示

72b574701c7ff6b4851db7ee29d69833.png

本文目的并不是要评出一个最好的库,仅是从不同角度对不同库进行对比,希望能够让大家了解各个库所擅长的工作

pandas

openpyxl

只有充分了解不同工具的特点,才能够在不同的场景下灵活运用不同的方法来高效解决问题!

- EOF -

推荐阅读

点击标题可跳转

再见 VBA!神器工具统一 Excel 和 Python

向 Excel 说再见,神级编辑器统一表格与 Python

我用 Python 的 Seaborn 库,绘制了 17 个超好看图表!

觉得本文对你有帮助?请分享给更多人

推荐关注「Python开发者」,提升Python技能

点赞和在看就是最大的支持

❤️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java编程中程序员会遇到的一些感性烦恼,你有遇到吗?

如果作为兴趣来学编程,什么人都适合。毕竟,现在小学生都开始学习编程了。如果要作为职业来说,你到底适合不适合确实是个问题。我教过的学员里面从初中生到博士生、甚至50多岁的企业高管都有,怀着不同的目的来学习JAVA。 我记得教过…

php入门和常用类的使用,php入门教程之常用数据类型和基本语法

php中数据类型有整型、小数型(浮动数)、布尔类型、字符及数组,变量,常量等下面我们一起来看看吧。一 PHP常用数据类型1.基本数据类型1.1整型1.2小数型(浮动数) 包含单精度和双精度1.3布尔类型 (表示真,和 假)1.4字符串2.复合数据类型2.1数组(…

java开发中spring常用的工具类

内置的resouce类型 UrlResourceClassPathResourceFileSystemResourceServletContextResourceInputStreamResourceByteArrayResourceEncodedResource 也就是Resource加上encoding, 可以认为是有编码的资源VfsResource(在jboss里经常用到, 相应还有 工具类 VfsUtils)org.springf…

python波士顿房价是什么数据,Python数据分析 | 波士顿房价回归分析

分析目标:将波士顿房价的数据集进行描述性数据分析、预测性数据分析(主要用了回归分析),可用于预测房价。数据集介绍:卡内基梅隆大学收集,StatLib库,1978年,涵盖了麻省波士顿的506个不同郊区的房屋数据。一…

Java开发的Spring Boot的核心模块

Spring Boot 的核心模块 下面我们大概来了解一下 Spring Boot 的核心模块。 1、spring-boot 这是 Spring Boot 的主模块,也是支持其他模块的核心模块,主要包含以下几点: 提供了一个启动 Spring 应用的主类,并提供了一个相当方便…

python的open函数百度百科,open函数

open函数可以打开一个文件。超级简单吧?大多数时候,我们看到它这样被使用:f open(photo.jpg, r)jpgdata f.read()f.close()我现在写这篇文章的原因,是大部分时间我看到open被这样使用。有三个错误存在于上面的代码中。你能把它们…

java开发中对于程序员的几点建议,你们有想到吗?

建议一:只有真正喜欢才能写好程序 喜欢写程序,做程序员就是上天堂; 不喜欢写程序,做程序员就是下地狱; 程序员需要整天趴在电脑前,经常没日没夜的,非常辛苦,而且工作来不得半点虚…

物化视图mysql,ClickHouse的物化视图及MySQL表引擎

-- . 在MySQL中创建表定义和加入数据:mysql> selectversion();-----------| version() |-----------| 8.0. |-----------row in set (0.01sec)mysql>show create table t_org\G*************************** . row ***************************Table: t_orgCre…

Java面向对象和面向过程有什么区别?网友:傻傻分不清楚……

面向对象,Obeject Oriented,是一种编程术语。面向对象是当今软件开发方法的主流方法之一,他是把数据以及对数据的操作放在一起,作为一个相互依存的整体,就是我们所说的对象。对同类对象抽象出其共性,就是类…

oracle oic配置,Oracle数据库 client配置

以下是11g client配置1. 从OTN下载几个压缩包下载地址为: http://www.oracle.com/technology/software/tech/oci/instantclient/index.html然后根据你的平台,选择不同的下载,我是安装在rhel5下,所以选择了linux x86 并下载了下面2…

Java 反射机制和动态代理是基于什么原理,了解过吗?

工作多年以及在面试中,我经常能体会到,有些面试者确实是认真努力工作,但坦白说表现出的能力水平却不足以通过面试,通常是两方面原因: 1、“知其然不知其所以然”。 做了多年技术,开发了很多业务应用&#x…

oracle执行sql痕迹,Oracle 查询刚执行的SQL

Oracle 查询刚刚执行的SQLselect "SQL_TEXT","SQL_FULLTEXT","SQL_ID","SHARABLE_MEM","PERSISTENT_MEM","RUNTIME_MEM","SORTS","LOADED_VERSIONS","OPEN_VERSIONS","USERS_…

成长为一名Java架构师需要掌握的技术有哪些呢?

Java架构师需要掌握的技术: 1、熟练使用各种框架,并知道它们实现的原理。 2、jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码; 3、池技术,什么对象池,连接池,线程池……Java反射技术&…

php 分布式数据库查询,分布式数据库

# 分布式数据库ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。配置database.deploy 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下&#xff1…

Java程序员遇到瓶颈后我们可以试着朝四个方向拓展?你们觉得呢?

现如今随着IT行业的火热,人们对于编程技术也是越来越关注重视,在从业后我们做Java开发难免会遇到一些瓶颈。在我看来解决这个问题一般有以下4种方向: 基于产品本身 要记住公司招人是解决问题的,基于现有问题出发,大家…

oracle 布尔盲注,Oracle基于延时的盲注总结

0x00 前言oracle注入中可以通过页面响应的状态,这里指的是响应时间,通过这种方式判断SQL是否被执行的方式,便是时间盲注;oracle的时间盲注通常使用DBMS_PIPE.RECEIVE_MESSAGE(),而另外一种便是decode()与高耗时SQL操作…

Java架构师除了必备的技术之外,这些技能也需必备?你们觉得呢?

成为Java架构师首先你必须是一名Java高级开发工程师,熟练使用各种框架,并且能知道他们其中的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池等等 Java构架师…

bat oracle导出数据库,bat命令oracle自动备份

echo offecho echo windows环境下Oracle数据库的自动备份脚本echo 说明:启动备份时,需要配置以下变量echo 1、BACKUP_DIR 指定要备份到哪个目录echo 2、ORACLE_USERNAME 指定备份所用的Oracle用户名echo 3、ORACLE_PASSWORD 指定备份所用的Oracle密码ech…

Java编程学习并不难,有坚持的动力与良好的心态尤为重要

时间过得很快,回想刚学习Java编程开发的懵懂无知,到现在可以做出简单的项目,可以明显的感觉到自己确实进步了。Java编程其实并不难学,难的是你能够一如既往的保持好的学习态度,并愿意努力的去背、去记、去做项目练习。…

php常用函数、算法,PHP常用函数和常量

PHP常用系统常量__FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。__DIR__文…