2022-11-02 07:14:16 +00:00
|
|
|
|
"""
|
|
|
|
|
基于openpyxl的excel读写模块
|
|
|
|
|
提供更简单的读写方式
|
|
|
|
|
"""
|
|
|
|
|
from openpyxl import load_workbook, Workbook
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ExcelWork:
|
|
|
|
|
|
|
|
|
|
def __init__(self, filePath):
|
|
|
|
|
"""
|
|
|
|
|
初始化, 加载excel,默认选择第一个工作表
|
|
|
|
|
:param filePath: str: 文件地址
|
|
|
|
|
"""
|
|
|
|
|
self.filePath = filePath
|
|
|
|
|
try:
|
|
|
|
|
# 加载excel
|
|
|
|
|
self.excel = load_workbook(self.filePath)
|
|
|
|
|
except FileNotFoundError:
|
|
|
|
|
# 创建excel
|
|
|
|
|
self.excel = Workbook(self.filePath)
|
|
|
|
|
# 创建sheet
|
|
|
|
|
self.createSheet('Sheet1')
|
|
|
|
|
# 保存excel
|
|
|
|
|
self.close()
|
|
|
|
|
# 加载excel
|
|
|
|
|
self.excel = load_workbook(self.filePath)
|
|
|
|
|
# sheet设置为第一个工作表
|
|
|
|
|
self.sheet = self.excel.active
|
|
|
|
|
|
|
|
|
|
def close(self):
|
|
|
|
|
"""
|
|
|
|
|
保存并退出
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
self.excel.save(self.filePath)
|
|
|
|
|
|
|
|
|
|
def createSheet(self, sheetName):
|
|
|
|
|
"""
|
|
|
|
|
创建工作表
|
|
|
|
|
:param sheetName: str: 工作表名
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
self.excel.create_sheet(sheetName)
|
|
|
|
|
|
|
|
|
|
def getSheetTitle(self):
|
|
|
|
|
"""
|
|
|
|
|
获取当前工作表名称
|
|
|
|
|
:return: str: 工作表名称
|
|
|
|
|
"""
|
|
|
|
|
return self.sheet.title
|
|
|
|
|
|
|
|
|
|
def getSheetTitles(self):
|
|
|
|
|
"""
|
|
|
|
|
获取excel所有工作表的名称
|
|
|
|
|
:return: list: [工作表名称,]
|
|
|
|
|
"""
|
|
|
|
|
return self.excel.sheetnames
|
|
|
|
|
|
|
|
|
|
def delSheet(self):
|
|
|
|
|
"""
|
|
|
|
|
删除当前工作表
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
self.excel.remove(self.sheet)
|
|
|
|
|
|
|
|
|
|
def selectSheet(self, sheetName):
|
|
|
|
|
"""
|
|
|
|
|
选择工作表, 如果没有将创建
|
|
|
|
|
:param sheetName: str: 工作表名
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
if sheetName in self.getSheetTitles():
|
|
|
|
|
# 选择工作表
|
|
|
|
|
self.sheet = self.excel[sheetName]
|
|
|
|
|
else:
|
|
|
|
|
# 创建工作表
|
|
|
|
|
self.createSheet(sheetName)
|
|
|
|
|
# 选择工作表
|
|
|
|
|
self.sheet = self.excel[sheetName]
|
|
|
|
|
|
|
|
|
|
def setCell(self, r, c, var):
|
|
|
|
|
"""
|
|
|
|
|
修改指定行, 列的单元格内容
|
|
|
|
|
:param r: int: 行数
|
|
|
|
|
:param c: int: 列数
|
|
|
|
|
:param var: str: 修改内容
|
|
|
|
|
:return:
|
|
|
|
|
"""
|
|
|
|
|
self.sheet.cell(row=r, column=c, value=var)
|
|
|
|
|
|
|
|
|
|
def getCell(self, r, c):
|
|
|
|
|
"""
|
|
|
|
|
获取指定行, 列的单元格内容
|
|
|
|
|
:param r: int: 行数
|
|
|
|
|
:param c: int: 列数
|
|
|
|
|
:return: str: 单元格内容
|
|
|
|
|
"""
|
|
|
|
|
return self.sheet.cell(row=r, column=c).value
|
|
|
|
|
|
|
|
|
|
def getRow(self, r):
|
|
|
|
|
"""
|
|
|
|
|
获取指定行所有数据
|
|
|
|
|
:param r: int: 行数
|
|
|
|
|
:return: list: [数据,]
|
|
|
|
|
"""
|
|
|
|
|
rowList = []
|
|
|
|
|
for cell in self.sheet[r]:
|
|
|
|
|
rowList.append(cell.value)
|
|
|
|
|
return rowList
|
|
|
|
|
|
|
|
|
|
def getColumn(self, c):
|
|
|
|
|
"""
|
|
|
|
|
获取指定列所有数据
|
|
|
|
|
:param c: int: 列数
|
|
|
|
|
:return: list: [数据,]
|
|
|
|
|
"""
|
|
|
|
|
columnList = []
|
|
|
|
|
for temp in range(1, self.sheet.max_row + 1):
|
|
|
|
|
columnList.append(self.getCell(temp, c))
|
2022-11-03 09:07:12 +00:00
|
|
|
|
return columnList
|
|
|
|
|
def getMaxRow(self):
|
|
|
|
|
return self.sheet.max_row
|
|
|
|
|
|
|
|
|
|
def saveFile(self):
|
|
|
|
|
self.excel.save(self.filePath)
|