126 lines
3.2 KiB
Python
126 lines
3.2 KiB
Python
"""
|
||
基于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))
|
||
return columnList
|
||
def getMaxRow(self):
|
||
return self.sheet.max_row
|
||
|
||
def saveFile(self):
|
||
self.excel.save(self.filePath) |