前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

一、openpyxl的使用

pip install openpyxl

第一步:打开工作簿(读取Excel文件中所有的数据保存为工作簿对象)

workbook = openpyxl.load_workbook('cases.xlsx')

第二步:选中表单对象

sheet = workbook['login']

第三步:通过表单选中表格读取数据

①读取内容(第五行第四列)

 data = sheet.cell(row=5,column=4)
printa(data.value) # 获取内容用value方法

②写入内容(保存才会生效)

 sheet.cell(row=7,column=3,value='("Python","123456")')
# 写入内容后,一定要保存才会生效
workbook.save('cases.xlsx')

③获取最大行和最大列

# 最大行
sheet.max_row
# 最大列
sheet.max_column

④按行获取所有的格子对象,每一行格子放入一个元组中

sheet.rows

注意点:不要随便在表格中敲空格

二、openpyxl的封装

导包

import openpyxl

封装

 class ReadExcel(object):
"""操作Excl文件""" def __init__(self, fileName, sheetName):
"""
初始化方法
:param fileName: Excel文件名
:param sheetName: 表单名
"""
self.fileName = fileName
self.sheetName = sheetName def open(self):
"""打开工作簿,选中表单"""
self.wb = openpyxl.load_workbook(self.fileName)
self.sh = self.wb[self.sheetName] def save(self):
"""保存工作簿对象的方法"""
self.wb.save(self.fileName)
self.wb.close() # 这一行加不加关系不大,加了可以释放内存

1、读取数据

①将每条数据存储成字典类型

     def read_data_dict(self):
"""读取数据(将每条数据存储成字典类型)"""
# 打开工作簿
self.open()
# 通过rows获取Excel文件中所有的行数据,然后把数据转成列表
rows = list(self.sh.rows)
# 表头
title = []
# 遍历Excel文件中的第一行表头信息
for i in rows[0]:
title.append(i.value)
# 用例数据列表
cases = []
# 遍历用例数据行
for row in rows[1:]:
# 定义一个列表存放每一行的数据
data = []
# 遍历每一行的数据
for r in row:
data.append(r.value)
# 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中
case = dict(zip(title, data))
cases.append(case)
return cases

②将每条数据存储成CaseData类对象类型

 class CaseData(object):
"""保存用例数据类"""
pass
def read_data_obj(self):
"""读取数据(将数据保存到CaseData类中)"""
self.open()
rows = list(self.sh.rows)
# 表头
title = []
# 遍历Excel文件中的第一行表头信息
for i in rows[0]:
title.append(i.value)
# 定义用例列表,用来存放用例类列表
cases = []
# 遍历用例数据行
for row in rows[1:]:
# 定义一个列表存放每一行的数据
data = []
# 遍历每一行的数据
for r in row:
data.append(r.value)
# 把每一行的数据通过zip进行打包,然后转成字典,存入到用例数据列表中
case = dict(zip(title, data))
# 定义一个用例存放类对象
case_obj = CaseData()
for k, v in case.items():
# 通过setattr()给对象添加属性
setattr(case_obj, k, v)
# 把对象添加到列表中
cases.append(case_obj)
return cases

2、写入数据

     def write_data(self, row, column, value):
"""
写入数据
:param row: 行
:param column: 列
:param value: 数据
"""
self.open()
# 指定行列进行写入数据
self.sh.cell(row=row, column=column, value=value)
# 保存
self.wb.save(self.fileName)
# 关闭
self.wb.close()

Python使用openpyxl操作excel表格的更多相关文章

  1. Python 使用openpyxl导出Excel表格的时候,使用save()保存到指定路径

    在使用openpyxl导出Excel表格的使用,如何指定导出的路径呢. 使用sava(filename),会保存到当前执行文件的路径下. 使用sava("/tmp/{}.xlsx" ...

  2. python用openpyxl操作excel

    python操作excel方法 1)自身有Win32 COM操作office但讲不清楚,可能不支持夸平台,linux是否能用不清楚,其他有专业处理模块,如下 2)xlrd:(读excel)表,xlrd ...

  3. python通过openpyxl操作excel

    python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作 ...

  4. 用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中

    现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法 ...

  5. python使用openpyxl操作excel总结

    安装openpyxl pip install openpyxl 简单示例 from openpyxl import Workbook #创建一个工作薄对象,也就是创建一个excel文档 wb = Wo ...

  6. openpyxl操作excel表格

    1.openpyxl 只支持打开.xlsx格式,其他excel类库基本也是 2.不能这里的工作面板直接右键新建表格,必须到文件夹下面去新建,可以把在别的目录新建的表格直接复制到当前目录下 3.从表格中 ...

  7. python库openpyxl操作excel

    废话不多说,看代码,不懂的留言. from openpyxl import * class ExcelUtil: ''' 读取excel文件内容''' def create_work_book(sel ...

  8. python使用openpyxl操作excel

    def initExcel(): file_path = "test.xlsx" file = load_workbook(file_path) table = file[&quo ...

  9. Python中用OpenPyXL处理Excel表格 - 单元格格式设置

    官方文档: http://openpyxl.readthedocs.io/en/default/ OpenPyXL库 --单元格样式设置 单元格样式的控制,依赖openpyxl.style包,其中定义 ...

随机推荐

  1. Stack Overflow 上 370万浏览量的一个问题:如何比较 Java 的字符串?

    在逛 Stack Overflow 的时候,发现了一些访问量像喜马拉雅山一样高的问题,比如说这个:如何比较 Java 的字符串?访问量足足有 370万+,这不得了啊!说明有很多很多的程序员被这个问题困 ...

  2. 异常:java.lang.RuntimeException: Canvas: trying to draw too large(161740800bytes) bitmap

    现象 今天做一个安卓项目的时候,我使用了10张图片,这10张图片都是放在了drawable目录下. 根据这个错误,我在网上寻找解决问题的方案,然后我放在了mipmap-xxhdpi下结果可以运行. 但 ...

  3. python网络爬虫之解析网页的正则表达式(爬取4k动漫图片)[三]

    前言 hello,大家好 本章可是一个重中之重,因为我们今天是要爬取一个图片而不是一个网页或是一个json 所以我们也就不用用到selenium模块了,当然有兴趣的同学也一样可以使用selenium去 ...

  4. vsftpd cmds_allowed 权限控制

    vsftpd cmds_allowed cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST, PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR, ...

  5. Django4模型(操作数据库)

    模型入门同步数据库的两个指令创建模型注意事项1.外键ForeignKey 模型入门 同步数据库的两个指令 python manage.py makemigrations python manage.p ...

  6. 使用 Flask 和 Vue.js 来构建全栈单页应用

    在这个教程中,我将向你展示如何将 Vue 的单页面应用和 Flask 后端连接起来. 简单的来说,如果想在 Flask 中使用 Vue 框架是没有什么问题的. 但在实际中存在一个明显的问题就是 Fla ...

  7. 腾讯iphone面试题(转)

    1Objective-C内部的实现 2CALayer和View的关系 3 http协议,tcp/ip 4 UITableView的那些元素是可以自定义的? 5 c语言的,定义变量,比如int,在什么情 ...

  8. NB-IoT将成为未来5G物联网主流技术

    日前,我国完成了IMT-2020(5G)候选技术方案的完整提交.据悉,在提交的方案中,NB-IoT技术被正式纳入5G候选技术集合,预计2020年6月ITU将正式宣布5G技术方案的诞生.而NB-IoT也 ...

  9. 《跟唐老师学习云网络》 -第5篇 Ping喂报文

    [摘要] 这一章节你的角色是国王,你要派一个小兵去对方打探一下.是站在你的角度看这个小兵.哦,对了,这个小兵的名字叫"喂". 一.Ping命令介绍 ping就是用来检测一下网络能不 ...

  10. luogu P1379 八数码难题

    题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了 ...