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 从远程服务器下载东西的代码
Feb 10 Python
Python中的MongoDB基本操作:连接、查询实例
Feb 13 Python
python绘图方法实例入门
May 19 Python
python获取多线程及子线程的返回值
Nov 15 Python
Python实现字典按照value进行排序的方法分析
Dec 23 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
Python实现微信翻译机器人的方法
Aug 13 Python
python3 配置logging日志类的操作
Apr 08 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
如何用 Python 制作一个迷宫游戏
Feb 25 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 Python
Python time库的时间时钟处理
Django项目如何获得SSL证书与配置HTTPS
Python基础之常用库常用方法整理
Apr 30 #Python
Django 实现jwt认证的示例
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 #Python
python绘图subplots函数使用模板的示例代码
教你怎么用Python处理excel实现自动化办公
You might like
PHP静态类
2006/11/25 PHP
LotusPhp笔记之:Logger组件的使用方法
2013/05/06 PHP
php调用shell的方法
2014/11/05 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
JavaScript数组方法的错误使用例子
2018/09/13 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
vue脚手架项目创建步骤详解
2021/03/02 Vue.js
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python中字符串的处理技巧分享
2016/09/17 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
2017/11/30 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python socket模块实现的udp通信功能示例
2019/04/10 Python
python视频按帧截取图片工具
2019/07/23 Python
OpenCV中VideoCapture类的使用详解
2020/02/14 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
大学生水文观测实习自我鉴定
2013/09/29 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
十八届三中全会感言
2014/03/10 职场文书
庆元旦演讲稿
2014/09/15 职场文书
工厂标语大全
2014/10/06 职场文书