通过封装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.导出数据到模 ...
随机推荐
- openstack高可用集群21-生产环境高可用openstack集群部署记录
第一篇 集群概述 keepalived + haproxy +Rabbitmq集群+MariaDB Galera高可用集群 部署openstack时使用单个控制节点是非常危险的,这样就意味着单个节 ...
- Ubuntu替换清华源或者阿里源
倒腾pygame包的问题(Ubuntu 19.10),安装好pip后,又要安装一个pygame的包,倒腾了两天两夜,硬是因为网络问题(可能被强大的墙阻挡了),安装不成功,后面在网上找了篇帖子,用清华源 ...
- Excel-RANK函数排名与拓展
问题场景 需求不同根据总分出排名(从大到小100分.100分.99分.98分.97分),排名需求: 第一种排名:第1名,第2名,第3名,第4名,第5名: 第二种排名:第1名,第1名,第3名,第4名,第 ...
- 大白话Java多线程,小白都能看的懂的哦
什么是线程 说到线程我们应该先了解下什么是进程,下面这个图片大家应该都比较熟悉吧. 我们看到的这些单独运行的程序就是一个独立的进程,进程之间是相互独立存在的.我们上面图中的360浏览器.百度云盘等等都 ...
- Java学习日报7.20
//7.20 三个和尚比身高import java.util.Scanner; //导包public class Hello{ public static void main(String[] arg ...
- JVM内存设置多大合适?Xmx和Xmn如何设置?
JVM内存设置多大合适?Xmx和Xmn如何设置? 问题:新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢? 分析:依 ...
- JAVA JVM助记符
ldc:将int/float/String类型的常量值从常量池中推送至栈顶(栈顶的值是即将要用的) bipush:将单字节(-128 ~ 127)的常量值从常量池中推至栈顶 sipush:将一个短整型 ...
- cmake - 编译
cmake在编译期间会使用到的命令总结: 1.指定编译器并同时设置编译选项 set(CMAKE_CXX_COMPILER "clang++" ) # 显示指定使用的C++编译器 s ...
- ViperX 300 Robot Arm 机械臂 “5自由度和360°全方位旋转”
- Android stdio使用时遇到的一些问题
(1)android stdio加载布局时 Exception raised during rendering: com/android/util/PropertiesMap ...