Python-封装-excel-读

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()

 

posted @ 2022-04-19 17:43  认知迭代  阅读(56)  评论(0)    收藏  举报