Python openpyxl schreiben Liste zu Excel-Fehler
Ich bin neu in Python und die Arbeit an meinem ersten Projekt. Ich bin versucht mein code zum kopieren von Spalten von Daten aus einer Tabelle aus und hängen Sie an die Daten, die derzeit in einem master-Blatt. Ich bin in der Lage zu erfassen, die Daten in jedem Blatt und erstellen Sie eine neue master-Liste, die kombiniert beide Daten-sets, aber ich habe Probleme beim schreiben in eine Datei. Wenn ich testen drucken Sie die kombinierte Listen Sie richtig angezeigt, aber wenn ich den code zum schreiben der Listen in eine Datei, es wird aufgehängt.
Jede Hilfe Sie bereitstellen können, werden sehr hilfreich sein!
Unten ist mein code. Hier ist der Fehler, ich bin immer
Traceback (most recent call last):
Datei "/Path/Path/Path/extractData.py", line 50, in
destSheet.Zelle(row=rowNum, column=1).Wert = masterList1
Datei "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/openpyxl/cell/cell.py", line 313, in Wert
selbst._bind_value(Wert)
Datei "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/openpyxl/cell/cell.py", line 217, in _bind_value
raise ValueError("Cannot convert {0} zu Excel".format(value))
ValueError: Cannot convert ['Rückversicherer', 'Markt 1', 'Markt 2', 'Markt 3', 'Markt 4', 'Markt 5', 'Markt 1', 'Markt 2', 'Markt 3', 'Markt 4', 'Markt 5', ['Markt 1', 'Markt 2', 'Markt 3', 'Markt 4', 'Markt 5']] Excel
import openpyxl
#Open source data file
sourceFile = openpyxl.load_workbook('/Path/Path/Path/testAuth.xlsx')
sourceSheet = sourceFile.get_sheet_by_name('Sheet1')
#read data from source file and create lists of new data
newList1 = []
newList2 = []
newList3 = []
for row in range(2, sourceSheet.get_highest_row()):
data1 = sourceSheet['A' + str(row)].value
newList1.append(data1)
data2 = sourceSheet['B' + str(row)].value
newList2.append(data2)
data3 = sourceSheet['C' + str(row)].value
newList3.append(data3)
#open destination workbook that includes the master database
destFile = openpyxl.load_workbook('/Path/Path/Path/testHist.xlsx')
destSheet = destFile.get_sheet_by_name('Sheet1')
#create empty lists for copying the historical data already in the workbook
masterList1 = []
masterList2 = []
masterList3 = []
#grab master spreadsheet data and write to list
for row in range(1, destSheet.get_highest_row()+1):
masterData1 = destSheet['A'+ str(row)].value
masterList1.append(masterData1)
masterData2 = destSheet['B'+ str(row)].value
masterList2.append(masterData2)
masterData3 = destSheet['C'+ str(row)].value
masterList3.append(masterData3)
#append new data to the history list
masterList1.append(newList1)
masterList2.append(newList2)
masterList3.append(newList3)
#write new master list to a new file
for rowNum in range(2, len(masterList1)):
destSheet.cell(row=rowNum, column=1).value = masterList1
destSheet.save("updatedTest.xlsx")
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstelle von zuweisen den Wert jeder Zelle zu
masterList1
Sie meinte wahrscheinlich die Verwendung dermasterList1[rowNum]
als Wert:Plus, da @mgrant wies darauf hin, Sie sollten haben erweiterte (nicht angehängt) die master-Liste bisher:
Haben Sie versucht, mit
extend
stattappend
?append
fügt ein einzelnes Element am Ende einer Liste, in der Erwägung, dassextend
eine Liste mit argument und fügt jedem Element.append
Methode, die ähnlich derappend
Methode für Listen, sondern hat spezifische syntax und Semantik. Die Ausnahme wird ausgelöst, wenn Sie versuchen, zuweisen von einer Liste an eine einzelne Zelle.extend
nötig war, in dem Sinne, dass @alecxe darauf hingewiesen, beim Bau masterList1, etc. Aber ich Stimme zu, dass die Zuordnung war das eigentliche problem.