Для печати цикла в терминале, а не в файле Excel - PullRequest
0 голосов
/ 08 мая 2019

Позвольте мне начать с заявления об отказе: я ужасен в питоне, но я готов учиться.Я пытаюсь создать скрипт Python, который создает имя пользователя и пароль для 33 человек в существующем файле Excel ( names.xslx ).Но всякий раз, когда я пытаюсь импортировать имена пользователей, они просто печатают в терминале, а не в файле Excel.

Я пытался найти решение в Интернете, но мне просто не удалось найти его.Я также попытался ввести каждое имя пользователя вручную, например:

ws['E2'] = (username(5))                                                        
ws['E3'] = (username(5))  

и т. Д., Который работал, но занимал 30 строк и занимал слишком много времени, поэтому я попытался создать цикл, но он не будет работать...

  1 import random                                                                   
  2 import string                                                                   
  3 from openpyxl import workbook                                                   
  4 from openpyxl import load_workbook                                              
  5                                                                                 
  6 wb = load_workbook('names.xlsx')                                                
  7 ws = wb.active                                                                  
  8                                                                                 
  9 def password(stringLength=8):                                             
 10     lettersAndDigits = string.ascii_letters + string.digits                     
 11     return ''.join(random.choice(lettersAndDigits) for i in range(stringLength))
 12                                                                                 
 13 def username(stringLength=5):                                                   
 14     lettersAndDigits = string.ascii_letters + string.digits                     
 15     return ''.join(random.choice(lettersAndDigits) for i in range(stringLength))
 16                                                                                 
 17 cell_range =ws["E2":"E34"]                                                      
 18 cell_range2 =ws["F2":"F34"]                                                     
 19                                                                                    
 20 for row in ws.iter_rows(min_row=2, max_col=5, max_row=34):                      
 21     for cell in row:                                                            
 22         print(username(5))                                                      
 23                                                                                 
 24 for row in ws.iter_rows(min_row=2, max_col=6, max_row=34):                      
 25   for cell in row:                                                              
 26      print(password(8))                                                         
 27 
 28 wb.save('names_mod.xlsx')                   

Я ожидал, что имена пользователей будут напечатаны в файле names_mod.xsl , но все имена пользователей только что напечатаны в терминале, например:

wFcDK
vJuuD
G1vXj
xBuNbD4s
OnG5kBJK
CkjEPUs2
bSY0mByj

и т.д .., пожалуйста, помогите!

1 Ответ

0 голосов
/ 08 мая 2019

Вам не нужно использовать print. Вам нужно записать значение в ячейку

Примерно так:

for cell in row:
    cell.value = username(5)

И добавьте параметр min_col, если вам нужно написать имя пользователя в 5-м столбце и пароль в 6-м столбце

for row in ws.iter_rows(min_row=2, min_col=5, max_col=5, max_row=34):                      
    for cell in row:                                                            
        cell.value = username(5)                                                    

for row in ws.iter_rows(min_row=2, min_col=6, max_col=6, max_row=34):                      
    for cell in row:                                                              
        cell.value = password(8) 
...