Seite 1 von 1

Python und Excel

Verfasst: Donnerstag 4. Februar 2021, 16:29
von Bykl
Hallo, ich will in Excel von Python eine Liste ausgeben lassen. Das klappt auch. Es gibt nur einen Schönheitsfehler. Python packt die Werte der Liste alle in eine Zelle. Ich will aber, daß er jeden Wert in die aufeinanderfolgenden Zellen einer Zeile packt.

Da der Druckbefehl in einer for-Schleife steht: eröffnet ws.append() jeweils ein neue Zeile. Es müßte also eine For-Schleife in den Druckbefehl rein, die ein Komma und einen Wert einbringt, damit Excel denkt, es handele sich um eine CSV-Datei, und eine Zelle weiterrückt. Was kann ich tun?

Das isses irgendwie nicht:

Code: Alles auswählen

ws=wb.active 
for i in range(1,70,1):
    cont=teiler_ermittler(i)
    cont1=""
    for y in cont:
        cont1 = cont1+str(y,)+", "
    ws.append([i,cont1]) 
    #ws.append([cont],) 
    print(i,teiler_ermittler(i))

Re: Python und Excel

Verfasst: Donnerstag 4. Februar 2021, 16:48
von Sirius3
Ich würde sagen, ganz eindeutig, du machst etwas falsch.
Was das genau ist, kann aber niemand sagen, weil niemand weiß, wie Du denn Deine Excel-Datei schreibst. Zeige Deinen Code, Input und Output, und was Du gerne anders hättest.

Re: Python und Excel

Verfasst: Donnerstag 4. Februar 2021, 17:02
von Bykl
Hier ist das Bild.

Bild

Die Zahlen in der 2. Zeile sollen jeder in einer extra Zelle stehen, und nicht alle in einer Zelle! Und das Komma aus der Liste will ich auch nicht drin haben, es ist ja unnötig, wenn jeder Teiler in einer Zelle steht.

Re: Python und Excel

Verfasst: Donnerstag 4. Februar 2021, 17:24
von Sirius3
Wenn Du nicht eine Zelle haben willst, dann würde ich als erstes keinen String erzeugen, in den Du per Komma getrennte Zahlen reinschreibst.

Re: Python und Excel

Verfasst: Donnerstag 4. Februar 2021, 17:29
von Bykl
Okay, und dann, was soll ich dann als 2.machen ?

Wenn ich so macht ....

Code: Alles auswählen

ws=wb.active 
for i in range(1,70,1):
    cont=teiler_ermittler(i)
  
    ws.append([i,cont]) 
    #ws.append([cont],) 
    print(i,teiler_ermittler(i))
kommt:
ValueError: Cannot convert [] to Excel

Re: Python und Excel

Verfasst: Donnerstag 4. Februar 2021, 17:34
von __blackjack__
@Bykl: Die `append()`-Methode vom Arbeitsblatt will ein Element pro Spalte. Also ``[1, 2, 3, 4]``. Was Du da jetzt versucht hast ist ``[1, [2, 3, 4]]``.

Das kannst Du mit einer Schleife machen. Oder die `extend()`-Methode von Listen verwenden. Oder die „unpacking syntax” mit ``*`` in einem Listenliteral.

Die Zeichenkette hattest Du übrigens sehr umständlich und ineffizient zusammengebastelt. Das hätte man mit der `join()`-Methode auf Zeichenketten gemacht:

Code: Alles auswählen

In [469]: ", ".join(map(str, range(10)))                                        
Out[469]: '0, 1, 2, 3, 4, 5, 6, 7, 8, 9'