python使用openpyxl库读写Excel表格的方法(增删改查操作)


Posted in Python onMay 02, 2021

一、前言

嗨,大家好,我是新发。
最近需要做个小工具,可以通过python来读写Excel,实现增删改查操作。以前用的是xlrdxlwt这两个python库,今天我要讲的是openpyxl库,我觉得openpyxlxlrdxlwt更强大更好用,话不多说,开始吧。

二、安装openpyxl

可以直接通过命令行安装

pip install openpyxl

python使用openpyxl库读写Excel表格的方法(增删改查操作)

如果你是内网环境,则可以先在外网下载openpyxl库然后转到内网再安装。
openpyxl下载地址:https://pypi.org/project/openpyxl/#files

python使用openpyxl库读写Excel表格的方法(增删改查操作)

不过如果你下载了openpyxl,因为openpyxl还依赖了et_xmlfile库,所以你还得下载个et_xmlfile

如果是用命令行pip install openpyxl,则会自动下载依赖。

et_xmlfile下载地址:https://pypi.org/project/et-xmlfile/#files

python使用openpyxl库读写Excel表格的方法(增删改查操作)

安装完毕后,在python中执行import openpyxl如果没有报错,则说明安装成功了。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

三、openpyxl的使用

1、创建Excel文件

演示代码:

import openpyxl

book = openpyxl.Workbook()
book.save(u'我的表格.xlsx')

运行效果如下,生成了一个excel表格。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

2、加载已存在的Excel文件

上面已经创建了一个表格,我们可以直接加载它。
演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
# ... 
book.close()

3、创建sheet

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book.create_sheet('我的Sheet')
book.save(u'我的表格.xlsx')
book.close()

运行效果如下:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

4、判断某个sheet是否存在

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
if None != book[u'我的Sheet']:
    print('我的Sheet 存在')
book.close()

运行结果:

我的Sheet 存在

5、遍历所有Sheet的名称

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
for sheet_name in book.sheetnames:
    print(sheet_name)
book.close()

运行结果:

Sheet
我的Sheet

6、写入单元格

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
sheet.cell(1,1).value = 'name'
sheet.cell(2,1).value = '姓名'
sheet.cell(3,1).value = '林新发'
book.save(u'我的表格.xlsx')
book.close()

运行效果

python使用openpyxl库读写Excel表格的方法(增删改查操作)

7、获取单元格的各个属性值

为了演示,我在我名字那里加个批注:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
cell = sheet.cell(3,1)
# 获取单元格的值
print('value:%s'%cell.value)
# 获取行号、列号
print('row: %d, col: %d'%(cell.row, cell.column))
# 获取列名
print('column_letter: %s'%cell.column_letter)
# 单元格的坐标
print('coordinate: %s'%cell.coordinate)
# 单元格数据格式,n: 数字,s:字符串,d: 日期
print('data_type: %s'%cell.data_type)
# 单元格编码格式
print('encoding: %s'%cell.encoding)
# 单元格样式
print('style: %s'%cell.style)
# 单元格批注
print('comment: %s'%cell.comment)
book.close()

运行结果:

value:林新发
row: 3, col: 1
column_letter: A
coordinate: A3
data_type: s
encoding: utf-8
style: 常规
comment: Comment: linxinfa:
多才多艺 by linxinfa

8、遍历单元格

为了演示,我加多一写数据:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

一行一行遍历,演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 一行一行遍历
for one_row in sheet.rows:
    for cell in one_row:
        print(cell, cell.value)
book.close()

运行结果:

<Cell 'Sheet'.A1> name
<Cell 'Sheet'.B1> profession
<Cell 'Sheet'.C1> hobby
<Cell 'Sheet'.A2> 姓名
<Cell 'Sheet'.B2> 职业
<Cell 'Sheet'.C2> 爱好
<Cell 'Sheet'.A3> 林新发
<Cell 'Sheet'.B3> Unity3D游戏开发工程师
<Cell 'Sheet'.C3> 吉他、钢琴、画画、猫猫、写博客

一列一列遍历,演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 一列一列遍历
for one_col in sheet.columns:
    for cell in one_col:
        print(cell, cell.value)
book.close()

运行结果:

<Cell 'Sheet'.A1> name
<Cell 'Sheet'.A2> 姓名
<Cell 'Sheet'.A3> 林新发
<Cell 'Sheet'.B1> profession
<Cell 'Sheet'.B2> 职业
<Cell 'Sheet'.B3> Unity3D游戏开发工程师
<Cell 'Sheet'.C1> hobby
<Cell 'Sheet'.C2> 爱好
<Cell 'Sheet'.C3> 吉他、钢琴、画画、猫猫、写博客

9、最大行最大列

为了演示,再加点数据。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
print('max_row: %d, max_column: %d'%(sheet.max_row, sheet.max_column))
book.close()

运行结果:

max_row: 4, max_column: 3

10、删除行或列

为了演示,我再加多写数据。

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 删除第5行
sheet.delete_rows(5)
# 删除第4列
sheet.delete_cols(4)
book.save(u'我的表格.xlsx')
book.close()

运行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

11、设置字体

演示代码:

import openpyxl
from openpyxl.styles import Font

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
cell = sheet.cell(4,1)
cell.font = Font(name='微软雅黑',size=18,color='00FFCC99',b=True,i=False)
book.save(u'我的表格.xlsx')
book.close()

运行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

12、填充单元格颜色

填充颜色之前

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl
from openpyxl.styles import PatternFill

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
cell = sheet.cell(4,2)
# 设置填充色
cell.fill = PatternFill('solid',fgColor='FFBB00')
book.save(u'我的表格.xlsx')
book.close()

运行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

13、设置行高与列宽

为了演示,我先把行高和列宽改成这样:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

演示代码:

import openpyxl
from openpyxl.utils import get_column_letter

book = openpyxl.load_workbook(u'我的表格.xlsx')
sheet = book['Sheet']
# 取第4行
row_4 = sheet.row_dimensions[4]
# 设置行高
row_4.height = 15
# 取第2列
col_2 = sheet.column_dimensions[get_column_letter(2)]
# 设置列宽
col_2.width = 40
book.save(u'我的表格.xlsx')
book.close()

执行效果:

python使用openpyxl库读写Excel表格的方法(增删改查操作)

注意,上面我用到了一个get_column_letter方法,因为column_dimensions需要的是字母参数,所以我们不能直接传2,通过get_column_letter(2)即可得到"B",也就是第2列
如果要反过来,通过字母逆算出数字,则用column_index_from_string方法,例:

from openpyxl.utils import column_index_from_string
print(column_index_from_string('B'))
# 输出2

四、结束语

完毕。
博主是Unity3D游戏工程师,喜欢Unity的同学,不要忘记点击关注,如果有什么Unity相关的技术难题,也欢迎留言或私信~

到此这篇关于python使用openpyxl库读写Excel表格的方法(增删改查操作)的文章就介绍到这了,更多相关python读写Excel表格内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之重回函数
Oct 10 Python
解密Python中的描述符(descriptor)
Jun 03 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
Dec 24 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
Python常见异常分类与处理方法
Jun 04 Python
利用Python在一个文件的头部插入数据的实例
May 02 Python
python 自定义对象的打印方法
Jan 12 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
python实现小世界网络生成
Nov 21 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 Python
Python pandas读取CSV文件的注意事项(适合新手)
Jun 20 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 Python
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
Django 实现jwt认证的示例
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 #Python
python绘图subplots函数使用模板的示例代码
教你怎么用Python处理excel实现自动化办公
You might like
BBS(php &amp; mysql)完整版(六)
2006/10/09 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
DEFER怎么用?
2006/07/01 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
javascript中clone对象详解
2014/12/03 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
Python实现的选择排序算法示例
2017/11/29 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
pytorch数据预处理错误的解决
2020/02/20 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python处理PDF与CDF实例
2020/02/26 Python
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
网站客服岗位职责
2014/04/05 职场文书
单位推荐信范文
2015/03/27 职场文书
2015年维修工作总结
2015/04/25 职场文书
刑事辩护词范文
2015/05/21 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
团结友爱主题班会
2015/08/13 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python