2016-08-12 6 views
2

XlsxWriter를 사용하여 Excel 열에 데이터를 쓰고 싶습니다. 각 반복마다 하나의 '데이터'세트가 작성됩니다. 각 세트는 별도의 열에 작성해야합니다. 어떻게해야합니까? [1]에서XlsxWriter의 각 반복마다 새 열을 만들 수 있습니까?

  • I는 루프 밖에 i=0 정의 이상 1하여 증가하고 col=i을 설정
    I는 다음과 같이 col 값 놀 시도했다. 이 작업이 완료되면 출력이 비어 있습니다. 나에게 이것은 가장 논리적 인 해결책이다. & 왜 작동하지 않을지 모르겠다.
  • 에서 [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() 방법을 사용할 수 있습니다.

그러나이 특별한 경우에 루프의 condition_c 부분을 통과 할 때마다 xlsxwriter.Workbook()을 통해 새 중복 파일을 생성하는 것으로 보입니다. 따라서 col의 마지막 값이 사용되며 다음 번에 루프를 통해 전체 파일을 덮어 씁니다.

아마도 xlsx 파일을 루프 외부로 옮겨야합니다. 아마도 같은 장소에 open() 텍스트 파일 일 것입니다.

+0

흠, 열을 통해 반복을 해결할 수 있는지 확실하지 않은가요? –

+0

위 업데이트를 참조하십시오. – jmcnamara

관련 문제