python单例模式保存excel数据

数据存在框架中样式

  • 数据在框架中应当用缓存的形式

  • 结束后写入文件,不然频繁写入导致出现问题

    excel 读取数据问题

    import win32com.client
    
    def open_excel(path):
        #载入Excel
        xlApp=win32com.client.Dispatch("Excel.Application")
        '''
        设置是否打开Excel
        True:Excel可见
        Fasle:Excel不可见
        '''
        xlApp.Visible=True
        '''
        设置是否显示警告和消息框
        True:显示
        False:不显示
        '''
        xlApp.DisplayAlerts=False
        #打开Excel
        xlwb=xlApp.Workbooks.Open(Filename=path,UpdateLinks=0,
        ReadOnly=False,Format=None)
        #获取某个Sheet页数据(页数从1开始)
        sheet_data=xlwb.Worksheets(1).UsedRange.Value
        print(sheet_data)
        #获取某个单元格数据 
        '''
        最好设置单元格格式为文本格式,默认格式读取
        全数字时,会在后面带上小数点:
        如单元格中为123,读取出来可能为123.0
        sheet_data[行][列]
        行,列都是从0开始计算
        '''
        data=sheet_data[0][0]
        #保存excel
        xlwb.Save()
        #关闭Excel
        xlwb.Close()
        xlApp.Quit()
        return  sheet_data
    

data 缓存问题

from testSington import Singleton
from testExcel import open_excel


@Singleton
class Sdata(object):
    __eData = []

    @property
    def excelData(self):
        return self.__eData

    @excelData.setter
    def excelData(self, data):
        self.__eData = data


if __name__ == '__main__':
    data = open_excel(r'C:\Users\lotsa\PycharmProjects\pytestDemo\1.xlsx')
    print(type(data))
    sd = Sdata()
    sd.excelData = list(data)
    print(sd.excelData)
    de = Sdata()

    print(de.excelData)

单例实现模式

class Singleton(object):
    _INSTANCE = {}

    def __init__(self, cls):
        self.cls = cls

    def __call__(self, *args, **kwargs):
        instance = self._INSTANCE.get(self.cls, None)
        if not instance:
            instance = self.cls(*args, **kwargs)
            self._INSTANCE[self.cls] = instance
        return instance

    def __getattr__(self, key):
        return getattr(self.cls, key, None)

你可能感兴趣的:(python单例模式保存excel数据)