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之深入变量和引用对象
Sep 24 Python
在Python的Django框架中包装视图函数
Jul 20 Python
Python中struct模块对字节流/二进制流的操作教程
Jan 21 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 Python
PyTorch中Tensor的维度变换实现
Aug 18 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
python numpy实现rolling滚动案例
Jun 08 Python
Python计算信息熵实例
Jun 18 Python
Python os库常用操作代码汇总
Nov 03 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
python 如何停止一个死循环的线程
Nov 24 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+DBM的同学录程序(2)
2006/10/09 PHP
开源php中文分词系统SCWS安装和使用实例
2014/04/11 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
php中yii框架实例用法
2020/12/22 PHP
js判断ie版本号的简单实现代码
2014/03/05 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
2019/08/02 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
Python实现图像几何变换
2015/07/06 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
公司晚会主持词
2014/03/22 职场文书
公司副总经理任命书
2014/06/05 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
学雷锋倡议书
2015/01/19 职场文书
销售员岗位职责范本
2015/04/11 职场文书
廉政承诺书2015
2015/04/28 职场文书
机器人总动员观后感
2015/06/09 职场文书
《颐和园》教学反思
2016/02/19 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android