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之玩转字符串(1)
Sep 14 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
使用Python对IP进行转换的一些操作技巧小结
Nov 09 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
python实现类之间的方法互相调用
Apr 29 Python
python代码过长的换行方法
Jul 19 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
python使用sklearn实现决策树的方法示例
Sep 12 Python
pytorch实现mnist分类的示例讲解
Jan 10 Python
Python socket服务常用操作代码实例
Jun 22 Python
Python中的程序流程控制语句
Feb 24 Python
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
Django 实现jwt认证的示例
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 #Python
python绘图subplots函数使用模板的示例代码
教你怎么用Python处理excel实现自动化办公
You might like
用PHP将数据导入到Foxmail
2006/10/09 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
php生成图片验证码
2015/06/09 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
Python正则表达式和元字符详解
2018/11/29 Python
python实现银行管理系统
2019/10/25 Python
Python更新所有已安装包的操作
2020/02/13 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
物流业务员岗位职责
2014/02/08 职场文书
团日活动总结
2014/04/28 职场文书
健康教育评估方案
2014/05/25 职场文书
企业法人授权委托书
2014/09/25 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
工作收入证明模板
2015/06/12 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫
Java的Object类的九种方法
2022/04/13 Java/Android