2017-04-26 6 views
0

Ich möchte eine Datei mit Python öffnen und Abfrageergebnisse aus Oracle in ein bestimmtes Blatt einfügen. Ich habe mit xlswriter einen Weg gefunden, aber das ist nicht das richtige Werkzeug für den Job.Python openpyxl Fehler

Ich kann meine Abfrage ausführen und an eine Liste anhängen. Ich habe sowohl Strings als auch Integer im Ergebnis. Ich kann dies nicht in eine Excel-Datei übertragen. Jede Hilfe wäre großartig.

Der Fehler Ich erhalte ist:

line 201, in _bind_value 
    raise ValueError("Cannot convert {0} to Excel".format(value)) 

ValueError: Cannot convert ('20 GA GV-CS-CT-DRY-G90 60xC COIL', 2, 848817, 982875, 1.15793510261929) to Excel 

Code:

import cx_Oracle 
import openpyxl 

con = cx_Oracle.connect('example', 'example', "example") 
cur = con.cursor() 

heatmap_data = [] 

statement = """ select * from example""" 

cur.arraysize = 2000 
cur.execute(statement) 

for result in cur: 
    heatmap_data.append(result) 

con.close() 

file = "path/Test.xlsx" 

wb = openpyxl.load_workbook(filename=file) 
ws = wb.get_sheet_by_name("Sheet1") 

row = 1 
col = 1 


for rowNum in range(2, len(heatmap_data)): 
    ws.cell(row=row, column=col).value = heatmap_data[rowNum] 
    row =+ 1 

wb.save(file) 

Antwort

0

das Problem mit dem folgenden Code Entschlossen:

row = 1 


    for i in (heatmap_data): 
     print(i[0], i[1], i[2], i[3], i[4]) 
     ws.cell(row=row, column=1).value = (i[0]) 
     ws.cell(row=row, column=2).value = (i[1]) 
     ws.cell(row=row, column=3).value = (i[2]) 
     ws.cell(row=row, column=4).value = (i[3]) 
     ws.cell(row=row, column=5).value = (i[4]) 
     row += 1 
+0

nicht den Druck benötigen Hat() Befehl. –

0

Vielleicht ist openpyxl nicht konvertieren Iterables (was weitergegeben werden aussieht) zu ws.cell.value.

Versuchen:
for rowNum, data in enumerate(heatmap_data): ws.cell(row=rowNum + 2, column=col).value = ", ".join(data[rowNum]) # Noticed the range you're choosing skips the first 2 values of your data. # Looks like you're not incrementing the column. Meh. Guess not.

Heh.