美文网首页
python单例模式保存excel数据

python单例模式保存excel数据

作者: 暂无牛逼代号 | 来源:发表于2020-04-10 09:03 被阅读0次

    数据存在框架中样式

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

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

      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数据

          本文链接:https://www.haomeiwen.com/subject/gkckmhtx.html