2016-07-11 7 views
0

Ich schrieb diesen Code, um Informationen, die ich in einer .csv-Datei gespeichert und nehmen Sie es in eine .xlsx-Datei. Wenn es in der Excel-Datei ist, sind alle Informationen Strings. Ich kann mir nicht vorstellen, wie ich sie in Zahlen umwandeln kann, damit ich dann openpyxl verwenden kann, um ein Liniendiagramm zu erstellen. Hier ist der CodeWie konvertiert man Zeichenketten in Zahlen, wenn Daten von .csv zu .xlsx, mit openpyxl

import openpyxl 
import csv 

examplefile = open('output.csv') 
exampleReader = csv.reader(examplefile) 
exampleData = list(exampleReader) 


wb = openpyxl.load_workbook('open.xlsx') 
ws = wb.get_sheet_by_name('Sheet1') 

for i in range (1,9): 
    for h in range(1, 5): 
     a = i-1 
     b = h-1 
     ws.cell(row=i, column=h).value = exampleData[a][b] 


wb.save('practice.xlsx') 

und hier wird die CSV-Datei

Date,Temp,Min Temp,Max Temp 
2016-07-11,288.69,287.68,288.69 
2016-07-12,289.55,288.79,289.55 
2016-07-13,294.3,293.79,294.3 
2016-07-14,296.35,296.098,296.35 
2016-07-15,291.824,291.824,291.824 
2016-07-16,293.373,293.373,293.373 
2016-07-17,291.808,291.808,291.808 

auch ich weiß, dass dies nicht der effizienteste Weg, um die Daten von a nach b zu erhalten, also wenn es irgendwelche Empfehlungen sind wie man das besser macht, bitte füge diese ein.

+0

Sie können die 'guess_types' Parameter in openpyxl verwenden, lassen Sie es handhaben Umwandlung für Sie. YMMV. –

Antwort

0

Der CSV-Leser liest die Datei in eine 2D-Liste ein, wobei jede Zeile eine Zeile darstellt. Die Daten werden eingelesen und als Strings gespeichert. Also würden Sie brauchen, um explizit die Werte werfen auf den gewünschten Typ, etwa wie folgt:

ws.cell(row=i, column=h).value = float(exampleData[a][b]) 

Schauen Sie hier für weitere Erklärung: Python import csv to list

Verwandte Themen