[接口测试 - 基础篇] 08 封装个基本的excel解析类
时间:2022-05-07
本文章向大家介绍[接口测试 - 基础篇] 08 封装个基本的excel解析类,主要内容包括封装类及使用、小结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
概述
本文基于openpyxl封装一个excel解析类,请注意,不采用Python的任何高级特性,就简简单单的一个类,实现excel的一些基本操作,并演示如何使用该类。
封装类及使用
直接上代码。
#-*- coding:utf-8 -*-
__author__ = "苦叶子"
import os
from openpyxl import Workbook, load_workbook
# excel自定义封装类
class LYMOpenXL:
def __init__(self, path, read_only=False):
self.wb = None
if os.path.exists(path):
self.path = path
self.wb = load_workbook(self.path,
read_only=read_only)
else:
print("%s 文件不存在" % path)
exit(0)
# 获取excel的行数
# 如果指定的工作簿存在,则返回其数据行数,否则返回None
def get_cell_row(self, sheet):
if self.wb:
# 先通过sheet获取工作簿
sh = self.wb.get_sheet_by_name(sheet)
if sh:
return sh.max_row
return None
# 获取excel的列数
# 如果指定的工作簿存在,则返回其数据列数,否则返回None
def get_cell_col(self, sheet):
if self.wb:
# 先通过sheet获取工作簿
sh = self.wb.get_sheet_by_name(sheet)
if sh:
return sh.max_column
return None
# 获取工作簿名称列表
def get_sheets_name(self):
if self.wb:
return self.wb.get_sheet_names()
return None
# 通过索引获取工作簿名
# 索引从0开始
def get_sheet_name_by_index(self, index):
if self.wb:
sheets = self.wb.get_sheet_names()
sheet_len = len(sheets)
if index >= 0 and index < sheet_len:
return sheets[index]
return None
# 创建工作簿
def create_sheet(self, name, index=0):
res = False
if self.wb:
self.wb.create_sheet(title=name, index=index)
res = True
return res
# 修改工作簿名
def set_sheet_name(self, sheet_name, name):
res = False
if self.wb:
self.wb[sheet_name].title = name
res = True
return res
# 获取单元格值
def get_cell_value(self, sheet, row, col):
value = None
if self.wb:
value = self.wb[sheet].cell(row=row,
column=col).value return value
# 设置单元格值
def set_cell_value(self, sheet, row, col, value):
res = False
if self.wb:
self.wb[sheet].cell(row=row,
column=col).value = value
res = True
return res
# 保存
def save(self, path=""):
if path != "":
self.path = path
if self.wb:
self.wb.save(self.path)
if __name__ == "__main__":
print("python openpyxl基本实例")
print("---" * 20, end='n')
xl = LYMOpenXL("openpyxl_demo.xlsx")
# 获取所有工作簿名
sheets = xl.get_sheets_name()
print(">>>获取工作簿列表", end='n')
print(sheets)
# 通过索引获取工作簿名
print("---" * 20, end='n')
print(">>>通过所有获取工作簿名")
for index in range(0, len(sheets)):
print(xl.get_sheet_name_by_index(index),
end=' ')
print(end='n')
# 获取各工作簿数据行列数
print("---" * 20)
for sheet in sheets:
nrows = xl.get_cell_row(sheet)
ncols = xl.get_cell_col(sheet)
print("工作簿[%s]的数据行列数为(%d, %d)"
% (sheet, nrows, ncols))
# 获取各工作簿中的数据
print("---" * 20)
print(">>>获取工作簿中数据")
for sheet in sheets:
nrows = xl.get_cell_row(sheet)
ncols = xl.get_cell_col(sheet)
print("---" * 20, end='n')
print("工作簿[%s]数据如下: " % sheet)
for row in range(1, nrows+1):
for col in range(1, ncols+1):
value = xl.get_cell_value(sheet, row, col)
print("[%d, %d]->%s" %
(row, col, value), end='t')
# 修改各工作簿第一行的数据为:DeepTest
print("---" * 20)
print(">>>设置工作簿中数据")
for sheet in sheets:
ncols = xl.get_cell_col(sheet)
for col in range(1, ncols+1):
xl.set_cell_value(sheet, row=1, col=col,
value="DeepTest")
# 保存
xl.save()
小结
请自行查阅openpyxl官方文档去实现以下功能
- 一次性读取多个单元格的值
- 设置指定单元格的字体
- 设置指定单元格的样式(例如背景色等)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法