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中列表list以及list与数组array的相互转换实现方法
Sep 22 Python
Python实现字典的遍历与排序功能示例
Dec 23 Python
Python切片工具pillow用法示例
Mar 30 Python
使用Py2Exe for Python3创建自己的exe程序示例
Oct 31 Python
pandas修改DataFrame列名的实现方法
Feb 22 Python
python3.6 tkinter实现屏保小程序
Jul 30 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
python库sklearn常用操作
Aug 23 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数组及条件,循环语句学习
2012/11/11 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
Javascript 中的 &amp;&amp; 和 || 使用小结
2010/04/25 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
js查找节点的方法小结
2015/01/13 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
angular+bootstrap的双向数据绑定实例
2017/03/03 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
python模块之re正则表达式详解
2017/02/03 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
python之pandas用法大全
2018/03/13 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Django中的session用法详解
2020/03/09 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
Java中实现多态的机制
2015/08/09 面试题
八项规定整改措施
2014/02/12 职场文书
小学家长评语大全
2014/04/16 职场文书
统计专业自荐书
2014/07/06 职场文书
数学备课组工作总结
2015/08/12 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL