通过封装openpyxl模块实现自己的Excel操作类
"""
excel类封装需要提供以下功能:
1、选择表单功能
2、读取一个单元格的数据功能
3、读取一行数据功能
4、读取表单中所有数据功能
5、往单元格中写入数据功能
6、保存数据功能
"""
from openpyxl import load_workbook class MyExcel: # 加载excel文件。
def __init__(self,filepath):
# 文件存在就加载。不存在就报错。
try:
self.wb = load_workbook(filepath)
except:
print("加载excel文件失败!!请检查!")
raise # 选择表单功能
def select_sheet_by_name(self,sheet_name="Sheet1"):
if sheet_name in self.wb.sheetnames:
self.sh = self.wb[sheet_name]
else:
print("表单名称在当前excel文件中不存在,请检测表单名称!") # 读取一个单元格的数据功能
def get_data_by_cell(self,row,column):
# 判断行号、列号有效
if self._check_num_valid(row,self.sh.max_row) is True and \
self._check_num_valid(column,self.sh.max_column) is True:
return self.sh.cell(row,column).value # 读取一行数据功能
def get_dada_by_row(self,row):
row_datas = []
# 判断行号有效
if self._check_num_valid(row, self.sh.max_row) is True:
# 有则读取一行数据
for col in range(1,self.sh.max_column+1):
row_datas.append(self.sh.cell(row,col).value)
return row_datas # 读取所有数据
def get_data_all(self):
all_datas = {}
for row in range(1,self.sh.max_row + 1):
row_datas = self.get_dada_by_row(row)
all_datas["第{}行: ".format(row)] = row_datas
return all_datas # 写入数据功能
def write_data_by_cell(self,row,column,value):
self.sh.cell(row,column).value = value # 保存功能
def save_datas(self,filepath):
try:
self.wb.save(filepath)
except PermissionError:
print("要操作的文件,没有写入权限。请检查权限!")
raise
except FileNotFoundError:
print("文件路径不存在,请确保路径正确!!")
raise
except:
print("保存写入的数据失败!!请检查异常")
raise # 检测数据有效
def _check_num_valid(self,cur_num,max_num):
# 类型检测
if type(cur_num) is not int and type(cur_num) is not str:
print("cur_num 数据类型错误!请确认为整数类型,或者为字符串类型!")
return
# 数字检测
if type(cur_num) is str:
try:
cur_num = int(cur_num)
except:
print("cur_num参数非法!请确认是输入数据为整数数字!")
return
# 数字是否出范围
if cur_num in range(1,max_num+1):
return True
else:
print("行号或者列号,超出了目前最大行号,或者最大列号!!")
return False if __name__ == '__main__': # 对自己定义的功能类进行测试
# 正常功能测试
e = MyExcel("datas.xlsx") # 加载文件
e.select_sheet_by_name("case_datas") # 选表单
print(e.get_dada_by_row(3)) # 读取第三行数据
print(e.get_data_by_cell(2,3)) # 读取某一个数据
e.write_data_by_cell(6,6,"我悄咪咪的进来了!") # 写入数据
e.write_data_by_cell(7,7,"哼哼,我也悄悄进来了!") # 写入数据
e.save_datas("datas.xlsx") # 保存数据
通过封装openpyxl模块实现自己的Excel操作类的更多相关文章
- C#封装的VSTO Excel操作类
自己在用的Excel操作类,因为经常在工作中要操作Excel文件,可是使用vba实现起来实在是不方便,而且编写也很困难,拼接一个字符串都看的眼花. 这个时候C#出现了,发现使用C#来操作Excel非常 ...
- C#EXCEL 操作类--C#ExcelHelper操作类
主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Excel文件5.将指定的集合数据导出至Exce ...
- Excel 操作类
转载:http://www.cnblogs.com/fellowcheng/archive/2010/08/21/1805158.html ExcelHelper(Excel2007) Code hi ...
- C#常用工具类——Excel操作类
/// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...
- C# Excel操作类
/// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...
- C#常用工具类——Excel操作类(ZT)
本文转载于: http://www.cnblogs.com/zfanlong1314/p/3916047.html /// 常用工具类——Excel操作类 /// <para> ----- ...
- C#自定义Excel操作类
C#自定义Excel操作类,可以用于将DataTable导出到Excel文件,从Excel文件读取数据. using System; using System.IO; using System.Dat ...
- C# Excel操作类 ExcelHelper
实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...
- [.Net] C# Excel操作类 ExcelHelper
实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...
随机推荐
- 解决No Python interpreter for the object
1. File --> Settings 2. Project:[项目名] --> Project Interpreter --> 点击齿轮 3. 点击齿轮出现Add,点击Add 4 ...
- CCNP之MERG实验报告
MGRE实验报告 一.实验要求: 1.R5为ISP,只能配置IP地址 2.R1--R3间建立MGRE环境,且使用EIGRP来学习各自环回 3.R4可以正常访问R5的环回 4.R1与R5进行chap认证 ...
- Java进阶专题(二十) 消息中间件架构体系(2)-- RabbitMQ研究
前言 接上文,这个继续介绍RabbitMQ,并理解其底层原理. 介绍 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的 ...
- .NET Core AWS S3云存储
前言 最近有需要用到AWS S3云存储上传附件,这里对利用.NET或.NET Core在调用SDK APi需要注意的一点小问题做个记录,或许能对后续有用到的童鞋提供一点帮助 AWS S3云存储 官方已 ...
- JavaWeb代码复用
servlet部分,可能用得到的复用的代码: 1.dopost设置字符 request.setCharacterEncoding("utf-8"); response.setCha ...
- 迭代器设计模式,帮你大幅提升Python性能
大家好,我们的git专题已经更新结束了,所以开始继续给大家写一点设计模式的内容. 今天给大家介绍的设计模式非常简单,叫做iterator,也就是迭代器模式.迭代器是Python语言当中一个非常重要的内 ...
- 如何使用容器镜像服务 TCR 轻松实现容器 DevOps
作者周明,腾讯云容器产品工程师.目前主要负责腾讯云TKE.TCR等产品控制台的相关研发工作. 概述 当你使用云厂商提供的容器服务部署业务服务后,是否对交付部署全链路的效率有更高的需求,例如实现基于容器 ...
- Kubernetes官方java客户端之五:proto基本操作
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- mysql plugin
mysql plugin 概要 mysql可以通过启动参数,系统命令mysql_install,mysql命令install plugin来加载指定的插件 mysql的存储引擎被设计成插件式,可以根据 ...
- SpringgBoot父子工程的创建
知识:SpringBoot父子工程创建 花开堪折直需折,莫待无花空折枝 开始之前,非常非常有必要了解一下关于以及的区别,这样才可以在进行创建maven父子工程种避免一些不必要的意外错误. depend ...