2016-08-12 6 views
2

Я хочу записать данные в столбцы Excel с помощью XlsxWriter. Один «набор» данных записывается для каждой итерации. Каждый набор должен быть написан в отдельной колонке. Как мне это сделать?
Я пытался играть вокруг со значением col следующим образом:Возможно ли создать новый столбец для каждой итерации в XlsxWriter

  • В [1] я определяю i=0 вне цикла, а затем увеличить его с помощью 1 и установить col=i. Когда это будет сделано, выход будет пустым. Для меня это наиболее логичное решение & Я не знаю, почему это не сработает.
  • В [2]i определяется внутри цикла. Когда это происходит, один столбец записывается.
  • [3] Я определяю col стандартный способ. Это работает так, как ожидалось: одна колонка написана.

Мой код:

import xlsxwriter 

txt_file = open('folder/txt_file','r') 
lines = dofile.readlines() 

# [1]Define i outside the loop. When this is used output is blank. 
i = 0 
for line in lines: 

    if condition_a is met: 
     #parse text file to find a string. reg_name = string_1. 

    elif condition_b: 
     #parse text file for a second string. esto_name = string_2. 

    elif condition_c: 
     #parse text file for a group of strings. 
     # use .split() to append these strings to a list. 
     # reg_vars = list of strings. 

     #[2] Define i inside the loop. When this is used one column gets written. Relevant for [1] & [2]. 
     i+=1 #Increment for each loop 
     row=1 
     col=i #Increments by one for each iteration, changing the column. 


     #[3] #Define col =1. When this is used one column also gets written. 
     col=1 

     #Open Excel 
     book= xlsxwriter.Workbook('folder/variable_list.xlsx') 
     sheet = book.add_worksheet() 

     #Write reg_name 
     sheet.write(row, col, reg_name) 
     row+=1 

     #Write esto_name 
     sheet.write(row, col, esto_name) 
     row+=1 
     #Write variables 
     for variable in reg_vars: 
      row+=1 
      sheet.write(row, col, variable) 

    book.close() 

ответ

0

Вы можете использовать метод XlsxWriter write_column(), чтобы составить список данных в виде столбца.

Однако, в данном конкретном случае проблема заключается в том, что вы создаете новый дубликат файла через xlsxwriter.Workbook() каждый раз, когда вы проходите через часть цикла condition_c. Поэтому используется последнее значение col, и весь файл перезаписывается в следующий раз через цикл.

Возможно, вам необходимо переместить создание файла xlsx за пределы цикла. Возможно, на том же месте вы найдете open() текстовый файл.

+0

Хм, не уверен, что решает итерацию через столбцы? –

+0

См. Обновление выше. – jmcnamara

Смежные вопросы