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中将单词首字母大写的capitalize()方法
May 18 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
python中的字典操作及字典函数
Jan 03 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
python实现微信小程序用户登录、模板推送
Aug 28 Python
Django之路由层的实现
Sep 09 Python
python+selenium+Chrome options参数的使用
Mar 18 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
python中导入 train_test_split提示错误的解决
Jun 19 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 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
用ODBC的分页显示
2006/10/09 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
javascript类型转换示例
2014/04/29 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
2019/12/23 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python运行时间的几种方法
2016/06/17 Python
python中logging库的使用总结
2017/10/18 Python
Python OpenCV对本地视频文件进行分帧保存的实例
2019/01/08 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
解决python 找不到module的问题
2020/02/12 Python
python IDLE添加行号显示教程
2020/04/25 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
Prototype是怎么扩展DOM的
2014/10/01 面试题
小孩百日宴答谢词
2014/01/15 职场文书
《狐假虎威》教学反思
2014/02/07 职场文书
求职信格式要求
2014/05/23 职场文书
美术课外活动总结
2014/07/08 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技