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 ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
python类中super()和__init__()的区别
Oct 18 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
python pprint模块中print()和pprint()两者的区别
Feb 10 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
Mar 18 Python
Python类及获取对象属性方法解析
Jun 15 Python
python中id函数运行方式
Jul 03 Python
python文件排序的方法总结
Sep 13 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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
第十四节 命名空间 [14]
2006/10/09 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
CI框架数据库查询之join用法分析
2016/05/18 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
Bootstrap输入框组件使用详解
2017/06/09 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
python实现二叉树的遍历
2017/12/11 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
2017/12/14 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
python super的使用方法及实例详解
2019/09/25 Python
python获取array中指定元素的示例
2019/11/26 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python redis存入字典序列化存储教程
2020/07/16 Python
Farfetch阿联酋:奢侈品牌时尚购物平台
2019/07/26 全球购物
食品营养与检测应届生求职信
2013/11/08 职场文书
纪检监察建议书
2014/05/19 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
银行奉献演讲稿
2014/09/16 职场文书
听证通知书
2015/04/24 职场文书