通过封装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.导出数据到模 ...
随机推荐
- Java 面试知识点【背诵版 240题 约7w字】
-- 转载自牛客网 是瑶瑶公主吖 Java 基础 40 语言特性 12 Q1:Java 语言的优点? ① 平台无关性,摆脱硬件束缚,"一次编写,到处运行". ② 相对安全的内存管理 ...
- 纯Python绘制艺术感满满的山脊地图,创意满分
1 简介 下面的这幅图是英国摇滚乐队 Joy Division 在1979年发行的其第一张录音室专辑 Unknown Pleasures 的封面,由艺术家 Peter Saville 基于射电脉冲星信 ...
- 如何查看打印机的IP地址和MAC地址
1. 打开控制面板,选择设备和打印机: 2. 选中打印机,右键单机,选择打印机 "属性": 3. 选择web服务,可以直接查看打印机的IP地址或MAC地址,如下图所示: 4. ...
- 详解Vue中的插槽
作者: 小土豆 博客园:https://www.cnblogs.com/HouJiao/ 掘金:https://juejin.im/user/2436173500265335 什么是插槽 在日常的项目 ...
- springboot 启动jar正确方式
首先需要pom.xml配置一个插件: IDEA 在右侧执行顶上m图片按钮 在command Line 中执行clean package命令 执行打包注意 打完jar包后最好解压jar查看一下META- ...
- 自动化运维工具-Ansible之2-ad-hoc
自动化运维工具-Ansible之2-ad-hoc 目录 自动化运维工具-Ansible之2-ad-hoc Ansible ad-hoc Ansible命令模块 Ansible软件管理模块 Ansibl ...
- AgileConfig-如何使用AgileConfig.Client读取配置
前面的文章(AgileConfig基于.NetCore的一个轻量级配置中心,AgileConfig轻量级配置中心 1.1.0 发布,支持应用间配置继承)都是介绍AgileConfig服务端已经控制台是 ...
- app逆向万能的md5加密hook破解入参方法(其他加密用通用方法原理差不多,小白推荐)
一.原理 安卓开发调用md5加密时候都会调用到系统类java.security.MessageDigest 加密时候会会调用里面2个关键方法update以及digest 根据这个原理我们开始写代码吧 ...
- centos7搭建sonarqube环境+jenkins部署全流程
一.简介sonarqube是一个用于代码质量管理的开源平台,用于管理源代码的质量 不遵循代码标准sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写.潜在的 ...
- 关于Objects类的getClass方法为什么可以得到子类的地址的思考
这一段时间,总是很纠结为什么Objects中的getClass方法可以返回包含子类地址信息的东西(我不确定返回值类型). 因为在Java中,我们定义的父类,我想破脑袋也想不出怎么可以得到子类的信息. ...