import os
import openpyxl
class Reader:
def __init__(self):
'''
wb为工作簿
sh为工作表
shnames为所有的sheet名称
lines为所有行组成的列表
'''
self.wb=None
self.sh=None
self.shnames=[]
self.lines=[]
#打开excel--需要文件名
def open_excel(self,filename):
'''
打开excel文件
:param filename: 文件名或者文件的路径
:return:
'''
if os.path.isfile(filename):
if filename.endswith('xlsx'):
self.wb=openpyxl.load_workbook(filename)
self.filename=filename
print('excel文件打开成功')
else:
print('文件名后缀不正确')
return
else:
print('传入的参数不正确,请检查!')
return
#获取所有的sheet名称
def get_all_sheet(self):
'''
获取所有的sheet名称
:return:
'''
self.shnames=self.wb.sheetnames
#确定sheet页
def choose_sheet(self,sheet_name=None):
'''
选择要操作的sheet页
:param sheet_name: sheet名称
:return:
'''
if sheet_name is None:
self.sh=self.wb.active
# print(self.sh.title)
else:
if sheet_name in self.wb.sheetnames:
self.sh=self.wb[sheet_name]
# print(self.sh.title)
else:
print('您指定的sheet不存在!')
return
def update_sheet_name(self,oldname,newname):
'''
更新sheet名称
:param self:
:param oldname: 已有的sheet名称
:param newname: 新名称
:return:
'''
if newname in self.wb.sheetnames:#判断名称是否已存在
print('%s已存在'%newname)
return
else:
self.wb[oldname].title=newname
#读取内容
def read_sheet(self):
for row in self.sh.rows:
line=[]
for cell in row:
if cell.value is None:
line.append('')
else:
line.append(cell.value)
self.lines.append(line)
print(self.lines)
def save(self, filename=None):
'''
保存
:param filename: 用户传入的文件名
:return:
'''
if filename is None:
self.wb.save(self.filename) # self.filename是文件的原名
else:
self.wb.save(filename) # 用户传入的名称
#实际使用如下
rd=Reader()
rd.open_excel(r'D:\0408-0420 python\老师的笔记\day8\b.xlsx')
rd.choose_sheet('设备表')
rd.update_sheet_name('设备表','新名字')
rd.save()
rd.read_sheet()