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

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

❤️



推荐阅读
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 本文汇集了作者在准备研究生入学考试过程中的心得体会,包括备考策略、复习重点及应对考试的心理调适技巧,旨在为即将参加考研的学生提供实用建议。 ... [详细]
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • Lua字符串1.字符串常见形式字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua语言中字符串可以使用以下三种方式来表示:•单引号间的一串字符。 ... [详细]
  • 探索CNN的可视化技术
    神经网络的可视化在理论学习与实践应用中扮演着至关重要的角色。本文深入探讨了三种有效的CNN(卷积神经网络)可视化方法,旨在帮助读者更好地理解和优化模型。 ... [详细]
  • 一.数据基本类型之set集合set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在se ... [详细]
  • 1,滤波流程2,图像的金字塔分解(拉普拉斯金字塔)3,金字塔傅里叶频率组合滤波(本文完ÿ ... [详细]
  • iOS如何实现手势
    这篇文章主要为大家展示了“iOS如何实现手势”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
  • 本文详细介绍了如何在PyQt5中创建简易对话框,包括对话框的基本结构、布局管理以及源代码实现。通过实例代码,展示了如何设置窗口部件、布局方式及对话框的基本操作。 ... [详细]
  • 本文介绍了如何使用 Python 的 Pyglet 库加载并显示图像。Pyglet 是一个用于开发图形用户界面应用的强大工具,特别适用于游戏和多媒体项目。 ... [详细]
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社区 版权所有