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进阶教程之文本文件的读取和写入
Aug 29 Python
python正常时间和unix时间戳相互转换的方法
Apr 23 Python
python实现比较两段文本不同之处的方法
May 30 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
Apr 21 Python
Python语言描述随机梯度下降法
Jan 04 Python
python3 requests中使用ip代理池随机生成ip的实例
May 07 Python
Python GUI Tkinter简单实现个性签名设计
Jun 19 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
pandas dataframe 中的explode函数用法详解
May 18 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
php中adodbzip类实例
2014/12/08 PHP
php intval函数用法总结
2019/04/14 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
使用jquery.qrcode生成彩色二维码实例
2014/08/08 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
Django如何自定义分页
2018/09/25 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
Python @property及getter setter原理详解
2020/03/31 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
网络工程师个人的自我评价范文
2013/10/01 职场文书
销售冠军获奖感言
2014/02/03 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
2014年端午节活动方案
2014/03/11 职场文书
新年寄语大全
2014/04/12 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
出售房屋委托书范本
2014/09/24 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
求职信范文怎么写
2015/03/19 职场文书