sol13

script

Jul 3rd, 2020
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.05 KB | None | 0 0
  1. import PySimpleGUI as sg
  2. import openpyxl
  3. import datetime
  4. import os
  5.  
  6.  
  7. def SameFamily(a):
  8.     CacheArray = []
  9.     OutArray = []
  10.     num = []
  11.     for i in range(len(a)):
  12.         CacheArray.append(a[i].split("*"))
  13.     for i in range(len(CacheArray)):
  14.         for j in range(len(CacheArray)):
  15.             if j != i :
  16.                 if CacheArray[i][0] == CacheArray[j][0]:
  17.                     num.append(i)
  18.                     num.append(j)
  19.         #time.sleep(1)
  20.         #progress_bar.UpdateBar(i + 1)
  21.            
  22.     newNum=set(num)
  23.     for n in newNum:
  24.         OutArray.append(CacheArray[n])
  25.     OutArray = sorted(OutArray)
  26.     print(OutArray)
  27.     return OutArray
  28.    
  29.  
  30. def ScanFile(a):
  31.     str = '.xlsx'
  32.     if a !='':
  33.         if a.endswith(str) == True:
  34.             return True
  35.         else:
  36.             return False
  37.     else:
  38.         return False    
  39.  
  40.  
  41. day = datetime.datetime.today().strftime("%Y%m%d")
  42. outFile = 'out_'+str(day)+'.xlsx'
  43.  
  44. #gui
  45. layout = [[sg.Input(key='_FILES_'), sg.FilesBrowse()], [sg.OK(), sg.Cancel()]]
  46. window = sg.Window('Открыть файл', layout)
  47. while True:
  48.     # The Event Loop
  49.     event, values = window.read()
  50.     if event in (None, 'Exit', 'Cancel'):
  51.         break
  52.    
  53.     inputFile = values['_FILES_']
  54.     print(event, inputFile) #debug
  55.    
  56.    
  57.     if ScanFile(inputFile) == True:
  58.         StrCashe='' #временная строка
  59.         WorkArray=[]  #основной рабочий массив
  60.         wb = openpyxl.load_workbook(inputFile)
  61.         wbOut = openpyxl.Workbook()
  62.         ws = wb.active
  63.         #sheets = wb.get_sheet_names()
  64.         for row in ws.rows:
  65.             for cell in row:
  66.                 #делаем строковую переменную с данными из ячеек
  67.                 StrCashe=StrCashe+str(cell.value)+"*"
  68.         #заполняем массив со строками
  69.             WorkArray.append(StrCashe)
  70.             StrCashe = ''
  71.  
  72.         outArray = SameFamily(WorkArray)
  73.         sheet = wbOut.active
  74.         for i in range(len(outArray)):
  75.             for j in range(len(outArray[i])):
  76.                 c = sheet.cell(row = i+2, column = j+1)
  77.                 c.value = outArray[i][j]
  78.         wbOut.save('out.xlsx')
  79.         sg.popup('Все сделано')
  80.         break
  81.     else:
  82.         sg.popup('ОШИБКА! Выберите ФАЙЛ c расширением xlsx')
  83.         #break
Advertisement
Add Comment
Please, Sign In to add comment