2014-05-11 2 views
0

나중에 조작하기 위해 CSV를 xlsx로 변환하려고합니다. 하지만 내가 무엇을하든 상관없이 항상 xlsx를 만들고 시트 이름을 추가하면 아무 데이터도 나타나지 않습니다.csv에서 xlsx로 가져올 때 항상 공백입니까?

정말 혼란스럽고 모든 종류의 시도가있었습니다. 아래는 내가 사용한 코드 중 가장 완벽한 코드입니다.

import csv 
from xlsxwriter.workbook import Workbook 

workbook = Workbook("test.xlsx") 
worksheet = workbook.add_worksheet("Raw_Data") 

with open("C:\Console2\\csv.test",'r') as f: 
    reader = csv.reader(f) 
    for r, row in enumerate(reader): 
     for c, col in enumerate(row): 
      worksheet.write(r, c, col) 

나는 완전히 독자 선 후 비트를 이해하지 않는다, 그러나 정상적인 CSV를 쓰기 위해 내가 이것을 사용 찾을 관련된 모든 코드, 나는 "문은"시도를 보인다 그 중 하나가 작동하지 않았다.

EDIT - 문제가 독자 변수와 함께있는 것 같습니다. 왜 다른 코드에서 잘 작동하는지 모르겠습니다.

업데이트 - 코드가 원래 csv를 덮어 쓴 것처럼 보이는데, 왜 정확히, 나는 단지 파일을 읽고 내용을 유지하려고하지 않습니다.

+0

스크립트 끝에 'workbook.close()'를 추가하십시오. –

+0

문을 열면 자동으로 열린 파일이 닫히는 것을 읽은 것으로부터 깊은 인상을 받았습니다. 당신이 제안한대로 나는 여전히 노력했고, 같은, 빈 파일이 만들어졌습니다. – Kuzen

+0

'f'를 닫을 필요는 없습니다. 하지만 '통합 문서'를 닫아야 할 수도 있습니다. * xlswriter *를 사용하지 않았지만 [this] (https://xlsxwriter.readthedocs.org/example_demo.html#ex-demo) 예제에 따르면 통합 문서를 닫아야합니다. 통합 문서를 닫기 전에 실제 내용이 기록되지 않도록 할 수 있습니다. –

답변

1

당신은 그것이 작동되도록하는 workbook을 닫아야 :

import csv 
from xlsxwriter.workbook import Workbook 

workbook = Workbook("test.xlsx") 
worksheet = workbook.add_worksheet("Raw_Data") 

with open("C:\Console2\\csv.test",'r') as f: 
    reader = csv.reader(f) 
    for r, row in enumerate(reader): 
     for c, col in enumerate(row): 
      worksheet.write(r, c, col) 

workbook.close() 

는 예를 들어 here를 참조하십시오.

+0

일단 빈 csv 문제가 해결 되었으면, 이것은 실제로 정확한 코드이다. 많은 도움에 감사드립니다. – Kuzen