"""
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操作类的更多相关文章

  1. C#封装的VSTO Excel操作类

    自己在用的Excel操作类,因为经常在工作中要操作Excel文件,可是使用vba实现起来实在是不方便,而且编写也很困难,拼接一个字符串都看的眼花. 这个时候C#出现了,发现使用C#来操作Excel非常 ...

  2. C#EXCEL 操作类--C#ExcelHelper操作类

    主要功能如下1.导出Excel文件,自动返回可下载的文件流 2.导出Excel文件,转换为可读模式3.导出Excel文件,并自定义文件名4.将数据导出至Excel文件5.将指定的集合数据导出至Exce ...

  3. Excel 操作类

    转载:http://www.cnblogs.com/fellowcheng/archive/2010/08/21/1805158.html ExcelHelper(Excel2007) Code hi ...

  4. C#常用工具类——Excel操作类

    /// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...

  5. C# Excel操作类

    /// 常用工具类——Excel操作类 /// <para> ------------------------------------------------</para> / ...

  6. C#常用工具类——Excel操作类(ZT)

    本文转载于: http://www.cnblogs.com/zfanlong1314/p/3916047.html /// 常用工具类——Excel操作类 /// <para> ----- ...

  7. C#自定义Excel操作类

    C#自定义Excel操作类,可以用于将DataTable导出到Excel文件,从Excel文件读取数据. using System; using System.IO; using System.Dat ...

  8. C# Excel操作类 ExcelHelper

    实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...

  9. [.Net] C# Excel操作类 ExcelHelper

    实现C#与Excel文件的交互操作,实现以下功能: 1.DataTable 导出到 Excel文件 2.Model数据实体导出到 Excel文件[List<Model>] 3.导出数据到模 ...

随机推荐

  1. 卷积涨点论文 | Asymmetric Convolution ACNet | ICCV | 2019

    文章原创来自作者的微信公众号:[机器学习炼丹术].交流群氛围超好,我希望可以建议一个:当一个人遇到问题的时候,有这样一个平台可以快速讨论并解答,目前已经1群已经满员啦,2群欢迎你的到来哦.加入群唯一的 ...

  2. PDO实用

    $sql="select * from test4 "; $b = $pdo->query($sql); // 返回的是个新对象 $c =$b->fetchAll(); ...

  3. Android驱动学习-Eclipse安装与配置

    在ubuntu系统下安装配置Eclipse软件.并且让其支持编译java程序和内核驱动程序. 1. 下载Eclipse软件. 打开官网:http://www.eclipse.org/  点击 DOWN ...

  4. eclipse 4.4安装aptana插件

    eclipse 4.4安装aptana插件: 1.地址: http://download.aptana.com/studio3/plugin/update/index.html.在线安装即可成功! 2 ...

  5. Turtlebot3新手教程:OpenCR软件设置(shell)

    *本文针对如何利用脚本来更新固件进行讲解 具体步骤如下: burger的固件更新 $ export OPENCR_PORT=/dev/ttyACM0 $ export OPENCR_MODEL=bur ...

  6. Github不为人知的一个功能,一个小彩蛋

    Github 是一个基于Git的代码托管平台,相信很多人都用过,当然这些"很多人"中大部分都是程序员.当你在Github上创建仓库时(Github称项目为仓库),你会给这个仓库添加 ...

  7. 2021升级版微服务教程3—Eureka完全使用指南

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 默认文件1610014380163 教程全目录「含视 ...

  8. vrp OS Switch Rotuer Application

    交换机可以隔离冲突与,路由器可以隔离广播域,这两种设备在企业网络中应用越来越广泛.随着越来越多的终端接入到网络中,网络设备的负担也越来越重,这时网络设备可以通过华为专有的VRP系统来提升运行效率. 通 ...

  9. SonarQube学习(五)- SonarQube之自定义规则使用

    一.前言 古人云:"欲速则不达",最近真的是深有体会.学习也是如此,不是一件着急的事,越是着急越不会. 就拿SonarQube来说吧,去年年末就想学来着,但是想着想着就搁置了,有时 ...

  10. SpringBoot整合Shiro完成验证码校验

    SpringBoot整合Shiro完成验证码校验 上一篇:SpringBoot整合Shiro使用Redis作为缓存 首先编写生成验证码的工具类 package club.qy.datao.utils; ...