Hallo,
ich bin Neuling bei openpyxl und möchte eine xlsx-Datei zu einer CSV umwandeln.
Wie würde man da vorgehen ?
openpyxl, xlsx zu einer csv umwandeln
Das hört sich gut an Danke.
Mein einziges Problem ist nur noch, dass ich das sheet falsch aufrufe:
In der neuen Datei example.csv sollten eig die Werte stehen, doch wird folgendes einfach reingeschrieben:
(<Cell 'Tabelle1'.A1>, <Cell 'Tabelle1'.B1>,
<Cell 'Tabelle1'.C1>, <Cell 'Tabelle1'.D1>
, <Cell 'Tabelle1'.E1>)(<Cell 'Tabelle1'.A2>,
<Cell 'Tabelle1'.B2>, <Cell 'Tabelle1'.C2>, <Cell
'Tabelle1'.D2>, <Cell 'Tabelle1'.E2>)(<Cell 'Tabell
e1'.A3>, <Cell 'Tabelle1'.B3>, <Cell 'Tabelle1'.C3>,
<Cell 'Tabelle1'.D3>)
Wie deklariere ich ws so, dass ich alles aus dem sheet aufrufe ?
Mein einziges Problem ist nur noch, dass ich das sheet falsch aufrufe:
Code: Alles auswählen
import os
import openpyxl
xp = 'C:\\Users\\mn\\Desktop\\example.xlsx'
cp = 'C:\\Users\\mn\\Desktop\\example.csv'
wb = openpyxl.load_workbook(xp)
ws = wb.active
csv_arr = []
csv_file = open(cp,'w')
for row in ws:
csv_arr.append(row)
csv_file.write(str(row))
csv_file.close()
(<Cell 'Tabelle1'.A1>, <Cell 'Tabelle1'.B1>,
<Cell 'Tabelle1'.C1>, <Cell 'Tabelle1'.D1>
, <Cell 'Tabelle1'.E1>)(<Cell 'Tabelle1'.A2>,
<Cell 'Tabelle1'.B2>, <Cell 'Tabelle1'.C2>, <Cell
'Tabelle1'.D2>, <Cell 'Tabelle1'.E2>)(<Cell 'Tabell
e1'.A3>, <Cell 'Tabelle1'.B3>, <Cell 'Tabelle1'.C3>,
<Cell 'Tabelle1'.D3>)
Wie deklariere ich ws so, dass ich alles aus dem sheet aufrufe ?
@BaseFloor: Du willst die Werte der Zellen haben (value). Du willst zum Schreiben das csv-Modul verwenden und Dateien mit dem with-Statement öffnen. csv_arr wird gar nicht verwendet. Verwende aussagekräftigere Namen statt xp oder cp.
Code: Alles auswählen
import csv
start_time = time.clock()
import os
import openpyxl
xlsx_path = 'C:\\Users\\nounh\\Desktop\\example.xlsx'
csv_path = 'C:\\Users\\nounh\\Desktop\\example.csv'
wb = openpyxl.load_workbook(xlsx_path)
ws = wb.active
csv_arr = []
csv_file = open(cp,'w')
for row in ws:
csv_arr.append(row)
csv_file.write(str(row))
csv_file.close()
cp = csv-Pfad
Der csv_arr wird im for-lo doch verwendet. In diesen Array möchte ich die Werte des xlsx-sheets einfügen und dann als csv konvertieren.
Die Konvertierung gelingt. Doch es werden die oben gezeigten Werte in den Array übertragen.
Meine Frage ist wie ich ws deklarieren soll um einfach das ganze sheet aufzurufen.
Du befühlst das Array zwar, aber benutzt es danach nicht.
Du musst über eine Zeile laufen & value auf jedem Objekt aufrufen. Und das Ergebnis in einer neuen Liste speichern. Und DIE übergibst du an den csv writer.
Statt Variablen kryptisch zu benennen & die dann uns oder dir in 3 Wochen erklären zu müssen, benenn sie gleich richtig.
Du musst über eine Zeile laufen & value auf jedem Objekt aufrufen. Und das Ergebnis in einer neuen Liste speichern. Und DIE übergibst du an den csv writer.
Statt Variablen kryptisch zu benennen & die dann uns oder dir in 3 Wochen erklären zu müssen, benenn sie gleich richtig.
@BaseFloor: Wenn du sowieso schon `pandas` benutzt, dann kannst du die xlsx-Datei auch gleich mit `pd.read_excel` öffnen und mit `DataFrame.to_csv` speichern.