前言

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

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. 【CPLUSOJ】【USACO】【差分约束】排队(layout)

    [题目描述] Robin喜欢将他的奶牛们排成一队.假设他有N头奶牛,编号为1至N.这些奶牛按照编号大小排列,并且由于它们都很想早点吃饭,于是就很可能出现多头奶牛挤在同一位置的情况(也就是说,如果我们认 ...

  2. MySql 表索引设计原则

    索引的优点 1.加快数据的检索速度,这是创建索引的最主要的原因; 2.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性; 3.加速表和表之间的连接; 4.在使用分组和排序子句进行数据检索时,可 ...

  3. React Native从零开始构建项目(2019)

    环境搭建,参考官网 https://reactnative.cn/ 安装 Xcode Android Studio 目的,实现本地热重载开发,使用vsCode 运行失败,重新执行react-nativ ...

  4. Lambda入门,看这一篇幅就够了

    jdk1.8中的lambda表达式学习笔记 一.引入一个例子 我们写一个多线程的例子,如下:采用实现Runable接口的方式 package cn.lyn4ever.lambda; public cl ...

  5. centos7环境搭建一台mysql服务器启动多个端口

    在一台服务器上启动多个mysql实例,分别用不同的端口号,因centos7版本安装mysql5.7后不存在mysqld_multi .mysqld_safe等命令,做踩坑总结 Mysql多实例实现的3 ...

  6. Android项目依赖库管理方式简介

    在实际的android项目开发过程中,我们一般都会用一些现有的第三方库来实现我们的需求,避免重复造轮子.普遍使用到的,例如:网络请求库.图片处理库.界面UI库(自定义View.动画效果等).各种第三方 ...

  7. 07-kubernetes Ingress 原理 和 Ingress-nginx 案例

    目录 Service 类型 namespace 名称空间 Ingress Controller Ingress Ingress-nginx 进行测试 创建对应的后端Pod和Service 创建 Ing ...

  8. selenium无界面执行和反爬

    selenium无界面执行和反爬 无界面执行 from selenium import webdriver from selenium.webdriver.chrome.options import ...

  9. linux下svn服务器端的操作

    1.停止svn服务器端: [root@ www]# ps -ef|grep svnroot 21698 1 0 09:55 ? 00:00:00 svnserve -d -r /www/svn/roo ...

  10. Django2.2 Templates 页面渲染 数据列表跳转 以及简单的页面模块继承

    声明:本博客用的为pycharm Django2.2,基于此内容,会简单讲解 数据库传参形式的增删查改(完整小项目) 路由的 位置参数.关键字参数.以及html中反向解析路由 request的表单传递 ...