热门标签 | 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技能

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

❤️



推荐阅读
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了Python中文件的基本操作,包括打开、读取、写入和关闭文件的方法,并通过实例展示了如何将Excel文件转换为CSV文件以及进一步转换为HTML文件。此外,还涉及了成绩等级替换的具体实现。 ... [详细]
  • 本文介绍如何使用 Python 获取文件和图片的创建、修改及拍摄日期。通过多种方法,如 PIL 库的 _getexif() 函数和 os 模块的 getmtime() 和 stat() 方法,详细讲解了这些技术的应用场景和注意事项。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
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社区 版权所有