2016-10-15 3 views
0

.csv를 구문 분석하고 엑셀 형식으로 데이터를 저장하는 코드를 작성했습니다. 문제는 Excel의 모든 데이터가 "텍스트로 저장된 숫자"로 나타나고 차트를 사용하여 숫자를 나타낼 수 있도록 3 열부터 시작하는 데이터가 숫자 유형으로 변환되어야한다는 것입니다. 내 표는이 같은 찾고 :CSV를 파이썬을 사용하여 Excel 변환

C1  C2  C3 
R1 BlaBla   36552.00233102 ... 
R2   App1  3484.000000000 ... 
R3   App2  3399.000000000 ... 
..................................... 

를이 코드입니다 :

f = open("csv_file") 
wb = openpyxl.Workbook() 
ws = wb.active 
reader = csv.reader(f, delimiter=',') 
for i in reader: 
    ws.append(i) 

f.close() 
wb.save("excel_file") 

답변

2

CSV 파일이 따옴표에있는 숫자 요소가 포함되어 있습니까? 그렇다면, 그것은 당신이보고있는 결과가 될 것입니다. 예를 들어, 다음을 고려하십시오 int 값을 숫자로 기록되는 동안

import openpyxl 
wb = openpyxl.Workbook() 
ws = wb.active 
for i in [['100', 100]]: 
    ws.append(i)  
wb.save("excel_file.xlsx") 

str 값은 Excel에서 텍스트 요소로 기록됩니다. CSV 파일이

이 포함 된 경우
"100", 100 

csv은 문자열과 숫자로 그 해석 것이다.

당신은 추가하여 이후 귀하의 csv 파일에서 열 세에 모든 것을 변환 할 수 있습니다 :

i[2:] = [float(x) for x in i[2:]] 

를 라인에 통합 문서에 i를 추가 직전.

+0

내가 추가 전 [2] = [에서 x의 플로트 (x)의 전 [2]] 당신이 말한과 완벽하게 작동처럼. –

+0

웁스! 죄송합니다. 내 대답에 고정. – lungj

+0

openpyxl에는 통합 문서가이 경우 작동하는 값 유형을 "추측"할 수있는 옵션이 있습니다. 그러나 나는 항상 자신이 전환을 처리하도록 권하고 싶습니다. 'wb.guess_types = True'는 문법입니다. –

-3

내가 팬더에게 pandas.read_csv을 사용하고 부동 무엇인지 열 정의하지 않은 경우

1

을 pandas.to_excel하는 것이 좋습니다, 당신은 예외 처리기에 떠있는 값을 변환 할 수 있습니다. 코드가 될 수 :

reader = csv.reader(f, delimiter=',') 
for i in reader: 
    try: 
     ws.append(float(i)) 
    except ValueError: 
     ws.append(i) 

f.close() 
+0

'i'가 전체 행이기 때문에 이것은 작동하지 않습니다. –

관련 문제