Python3利用openpyxl读写Excel文件的方法实例


Posted in Python onFebruary 03, 2021

前言

Python中常用的操作Excel的三方包有xlrd,xlwt和openpyxl等,xlrd支持读取.xls和.xlsx格式的Excel文件,只支持读取,不支持写入。xlwt只支持写入.xls格式的文件,不支持读取。

openpyxl不支持.xls格式,但是支持.xlsx格式的读取写入,并且支持写入公式等。

原始数据文件apis.xlsx内容:

name method url data json result
get接口 get https://httpbin.org/get?a=1&b=2
post表单接口 post https://httpbin.org/post {name: Kevin,age:1}
post-json接口 post https://httpbin.org/post {name: Kevin,age: 21}

读取数据

读取所有数据

import openpyxl

# 打开excel
excel = openpyxl.load_workbook('apis.xlsx') # 有路径应带上路径
# 使用指定工作表
sheet = excel.active # 当前激活的工作表
# sheet = excel.get_sheet_by_name('Sheet1')
# 读取所有数据
print(list(sheet.values)) # sheet.values 生成器
print(sheet.max_column) # 最大列数
print(sheet.max_row) # 最大行数

显示结果:

[('name', 'method', 'url', 'headers', 'data', 'json', 'result'), ('get接口', 'get', 'https://httpbin.org/get?a=1&b=2', None, None, None, None), ('post表单接口', 'post', 'https://httpbin.org/post', 'cookie: token=123', '{name: Kevin,age: 21}', None, None), ('post-json接口', 'post', 'https://httpbin.org/post', None, None, '{name: Kevin,age: 21}', None)]
7
4

按行读取

代码接上例

...
# 按行读取
for row in sheet.iter_rows(min_row=1, min_col=1, max_col=3, max_row=3): 
 print(row)
# 读取标题行
for row in sheet.iter_rows(max_row=1):
 title_row = [cell.value for cell in row]
print(title_row)
# 读取标题行以外数据
for row in sheet.iter_rows(min_row=2):
 row_data = [cell.value for cell in row]
 print(row_data)

打印结果:

(<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>)
(<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>)
(<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>)
['name', 'method', 'url', 'headers', 'data', 'json', 'result']
['get接口', 'get', 'https://httpbin.org/get?a=1&b=2', None, None, None, None]
['post表单接口', 'post', 'https://httpbin.org/post', 'cookie: token=123', '{name: Kevin,age: 21}', None, None]
['post-json接口', 'post', 'https://httpbin.org/post', None, None, '{name: Kevin,age: 21}', None]

读取单元格数据

代码接上例

...
# 读取单元格数据
print(sheet['A1'].value)
print(sheet.cell(1,1).value) # 索引从1开始

打印结果:

name
name

写入文件

代码接上例

# 写入单元格
sheet['F2'] = 'PASS'
result_col = title_row.index('result')+1 # 'result'所在的列号
sheet.cell(3, result_col).value = 'PASS'
# 整行写入
new_row = ['post-xml接口', 'post', 'https://httpbin.org/post']
sheet.append(new_row)
# 保存文件,也可覆盖原文件
excel.save("apis2.xlsx")

写入结果:

name method url data json result
get接口 get https://httpbin.org/get?a=1&b=2 PASS
post表单接口 post https://httpbin.org/post {name: Kevin,age:1} PASS
post-json接口 post https://httpbin.org/post {name: Kevin,age: 21}
post-xml接口 post https://httpbin.org/post

更多操作可参考官方文档: https://openpyxl.readthedocs.io/en/stable/

总结

到此这篇关于Python3利用openpyxl读写Excel文件的文章就介绍到这了,更多相关Python3用openpyxl读写Excel文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python基于socket实现网络广播的方法
Apr 29 Python
python学习数据结构实例代码
May 11 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
python安装教程
Feb 28 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
python面试题之列表声明实例分析
Jul 08 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
python3中numpy函数tile的用法详解
Dec 04 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
关于Python错误重试方法总结
Jan 03 Python
python之openpyxl模块的安装和基本用法(excel管理)
Feb 03 #Python
python中time.ctime()实例用法
Feb 03 #Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 #Python
利用Python过滤相似文本的简单方法示例
Feb 03 #Python
python time.strptime格式化实例详解
Feb 03 #Python
Python字符串的15个基本操作(小结)
Feb 03 #Python
python调用百度AI接口实现人流量统计
Feb 03 #Python
You might like
在php中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
php中Snoopy类用法实例
2015/06/19 PHP
PHP+Ajax 检测网络是否正常实例详解
2016/12/16 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
php实现文件上传基本验证
2020/03/04 PHP
jQuery ready函数滥用分析
2011/02/16 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
js由下向上不断上升冒气泡效果实例
2015/05/07 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
JS实现页面内跳转的简单代码
2017/09/03 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
JavaScript 声明私有变量的两种方式
2021/02/05 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现在windows服务中新建进程的方法
2015/06/30 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
python3对接mysql数据库实例详解
2019/04/30 Python
python如何制作英文字典
2019/06/25 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
python os.path.isfile 的使用误区详解
2019/11/29 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
机器人总动员观后感
2015/06/09 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL