前言

为了更好的让openpyxl在工作中使用,将openpyxl的常用操作封装起来,这样不仅复用性高,而且阅读性好

直接上代码

 #!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ = openpyxl操作Excel工具类
""" import openpyxl class ExcelUtil:
workBook = None
workSheet = None def load_excel(self, path):
"""
加载Excel
:param path: 需要打开的Excel的路径
"""
self.workBook = openpyxl.load_workbook(path) def get_sheet_by_name(self, name):
"""
获取sheet对象
:param name: sheet名
"""
self.workSheet = self.workBook.get_sheet_by_name(name) def get_sheet_by_index(self, index=0):
"""
获取sheet对象
:param index: sheet的索引
"""
# 获取workBook里所有的sheet名 -> list
sheet_names = self.workBook.get_sheet_names()
# 根据索引获取指定sheet
self.workSheet = self.workBook[sheet_names[index]] def get_cell_value(self, col, row):
"""
获取cell的值
:param col: 所在列
:param row: 所在行
"""
try:
return self.workSheet.cell(column=col, row=row).value
except BaseException as e:
return None def get_cell_value_by_xy(self, str):
"""
获取cell的值
:param str: 坐标
"""
try:
return self.workSheet[str].value
except BaseException as e:
return None def get_sheet_rows(self):
"""
获取最大行数
"""
return self.workSheet.max_row def get_sheet_cols(self):
"""
获取最大列数
"""
return self.workSheet.max_column def write_data(self, row, col, value, path):
"""
写入数据
"""
try:
self.workSheet = self.workBook.active
self.workSheet.cell(column=col, row=row, value=value)
self.workBook.save(path)
except BaseException as e:
print(e)
return None def get_excel_data(self):
"""
获取表所有数据
:return: list
"""
# 方式一
data_list = tuple(self.workSheet.values)
# 方式二
# data_list = []
# for i in range(self.get_sheet_rows()):
# data_list.append(self.get_row_value(i + 2))
return data_list def get_row_value(self, row):
"""
获取某一行的内容
:param row: 第几行 -> str **从1开始**
:return: list
"""
# 方式一
row_list = self.get_excel_data()[row]
# 方式二
# row_list = []
# for i in self.workSheet[str(row + 1)]:
# row_list.append(i.value)
return row_list def get_col_value(self, col='A'):
"""
获取某一列的内容
:param col: 第几列 -> str
:return: list
"""
col_list = []
for i in self.workSheet[col]:
col_list.append(i.value)
return col_list def get_row_num(self, case_id):
"""
获取行号
:param case_id: 用例编号
:return:
"""
num = 1
col_data = self.get_col_value()
for data in col_data:
if case_id == data:
return num
num += 1
return 0 excelUtil = ExcelUtil() if __name__ == '__main__':
path = 'F:/interface/case/test.xlsx'
# 读取excel文件
excelUtil.load_excel(path)
# 获取某个sheet
excelUtil.get_sheet_by_name("Sheet1")
excelUtil.get_sheet_by_index()
# 获取某个cell的值
data = excelUtil.get_cell_value(col=1, row=1)
print(data)
data = excelUtil.get_cell_value_by_xy("A3")
print(data)
# 获取sheet行数
data = excelUtil.get_sheet_rows()
print(data)
# 获取sheet列数
data = excelUtil.get_sheet_cols()
print(data)
# 获取某一行数据
data = excelUtil.get_row_value(0)
print(data)
# 获取某一列数据
data = excelUtil.get_col_value()
print(data)
# 写入数据
excelUtil.write_data(row=9, col=1, value="test", path=path)
# 获取全部数据
data = excelUtil.get_excel_data()
print(data)
# 获取行号
data = excelUtil.get_row_num('imooc_001')
print(data)
 

最新文章

  1. 【freemaker】之判断是否为空,表达式的使用
  2. Scala 深入浅出实战经典 第76讲:模式匹配下的赋值语句
  3. HDU 1171(01背包)
  4. 【转】iOS基于WebSocket的聊天机制
  5. Colors
  6. 基于epoll的聊天室程序
  7. Nginx配置文件常用部分详解
  8. 2018-2019-1 20189203《Linux内核原理与分析》第五周作业
  9. IntelliJ配置SpringMVC提示“found:java.lang.String required:java.lang.String”
  10. Xcode OpenGL ES Frame Capture的使用
  11. VS2010 lib和dll导出路径设置
  12. Vue基础-渲染函数-父子组件-传递数据
  13. 【高德地图API】从零開始学高德JS API(二)地图控件与插件——測距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨
  14. YII2笔记之二
  15. codeforces B. Polo the Penguin and Matrix 解题报告
  16. 神奇的VIM
  17. zoj 2830 Champion of the Swordsmanship
  18. Appium + Python自动化 - 元素定位uiautomatorviewer
  19. Bullet:MySQL增强半同步参数rpl_semi_sync_master_wait_point值AFTER_SYNC和AFTER_COMMIT的对比实验
  20. HelloDjango 第 08 篇:开发博客文章详情页

热门文章

  1. JavaSE基础---异常
  2. java.lang.NoSuchMethodException: com.hgkj.controler.action.UserAction.newsLoginAction()
  3. CodeForces - 1189 E.Count Pairs (数学)
  4. POJ2763 Housewife Wind 树链剖分 边权
  5. 国内免费CMS系统大全
  6. 【网摘】一个用shell写的俄罗斯方块
  7. 20191017-8 alpha week 2/2 Scrum立会报告+燃尽图 07
  8. 清晰架构(Clean Architecture)的Go微服务: 日志管理
  9. java之set接口
  10. DRF框架中分页功能接口