热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

openpyxlxlrdxlwtxlwingsxlsxwriter了解各个库的异同,从而在不同场景下可以灵活使用首先让我们来整体把握下不同库的特点“xlrdxlwtx

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技能

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

❤️



推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用 Python 的 xlrd 库读取 Excel 文件,并将其数据处理后存储到数据库中。通过实际案例,详细讲解了文件路径、合并单元格处理等常见问题。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
author-avatar
伊华Zhu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有