2017-01-22 10 views
-1

Так много помощи и голову царапин через документы позже:Возьмите список и записать данные в новый файл XLSX с помощью питона и openpyxl

for row in ws.iter_rows(): 
     for cell in row: 
      if cell.value and isinstance(cell.value, str) and emailRegex.match(cell.value): 
       mail = emailRegex.match(cell.value) 
       if mail: 
        mail = mail.group(0) 
        customeremails.append(mail) 
print(customeremails) 

Команда печати получает меня:

[ '[email protected]', '[email protected]', '[email protected]']

Теперь я хотел бы добавить следующее, tryint, чтобы получить этот список в новый Excel файл, начинающийся с ячейки B2:

   #Adding the below before print(customeremails) 
       os.chdir("C:\Python34") 
       wb = Workbook() 
       dest_filename = 'trial.xlsx' 
       ws1 = wb.active 
       ws1.title = sheet 
       i = 2 
       for i,mail in enumerate(customeremails): 
        ws1.cell(row = i, column = 2).value = mail 
        i = i+1 
        return i 
       wb.save(filename = dest_filename) 

Файл создается, и рабочий лист переименовывается. Но я получаю только один из адресов электронной почты в списке.

+0

Я не понимаю: вам 'return' из вашего цикла. Он не может работать. –

+0

Возможный дубликат [Как совместить текст в ячейке с регулярным выражением и сохранять только текст, соответствующий регулярному выражению?] (Http://stackoverflow.com/questions/41779655/how-to-match-text-in-a-cell -to-regex-and-keep-only-the-text-which-matches-regex) –

+0

Речь идет о шестой версии этого вопроса! –

ответ

1

У вас есть 2 проблемы здесь:

  • вы возвращающегося i внутри цикла: бесполезно, и предотвращает файл от создаваемого правильно
  • вы используете enumerate и изменения/инициализации i: выберите. Я бы позволил enumerate выполнить эту работу.

Мое предложение (добавлено дополнительно параметров для enumerate так i начинается в 2, строка не может быть 0):

for i,mail in enumerate(customeremails,2): 
    ws1.cell(row = i, column = 2).value = mail 
wb.save(filename = dest_filename) 
+0

Спасибо. Операция 'return'. Я пытался все, что мог придумать. :) Чтение на 'enumerate' и что я сделал с' i' сейчас. – Sid