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的框架下的web app的详细教程
Apr 30 Python
Python批量重命名同一文件夹下文件的方法
May 25 Python
在Django的session中使用User对象的方法
Jul 23 Python
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
Django CBV类的用法详解
Jul 26 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
pytorch 如何使用batch训练lstm网络
May 28 Python
Python函数对象与闭包函数
Apr 13 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
再探JavaScript作用域
2014/09/24 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
讲解python参数和作用域的使用
2013/11/01 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
《陈毅探母》教学反思
2014/05/01 职场文书
我的中国梦演讲稿600字
2014/08/19 职场文书
学前教育专业求职信
2014/09/02 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
环卫工作个人总结
2015/03/04 职场文书
计算机实训心得体会
2016/01/14 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang