Ich bin neu in Python. Ich muss einige Daten aus meinem Programm in eine Tabelle schreiben. Ich habe online gesucht und es scheinen viele Pakete verfügbar zu sein (xlwt, XlsXcessive, openpyxl). Andere schlagen vor, in eine CSV-Datei zu schreiben (nie CSV verwendet und nicht wirklich verstanden, was es ist).
Das Programm ist sehr einfach. Ich habe zwei Listen (float) und drei Variablen (Strings). Ich kenne die Länge der beiden Listen nicht und sie werden wahrscheinlich nicht gleich lang sein.
Ich möchte, dass das Layout wie im Bild unten aussieht:
Die rosa Spalte enthält die Werte der ersten Liste und die grüne Spalte enthält die Werte der zweiten Liste.
Was ist der beste Weg, dies zu tun?
PS Ich verwende Windows 7, aber Office muss nicht unbedingt auf den Computern installiert sein, auf denen dieses Programm ausgeführt wird.
import xlwt
x=1
y=2
z=3
list1=[2.34,4.346,4.234]
book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")
sheet1.write(0, 0, "Display")
sheet1.write(1, 0, "Dominance")
sheet1.write(2, 0, "Test")
sheet1.write(0, 1, x)
sheet1.write(1, 1, y)
sheet1.write(2, 1, z)
sheet1.write(4, 0, "Stimulus Time")
sheet1.write(4, 1, "Reaction Time")
i=4
for n in list1:
i = i+1
sheet1.write(i, 0, n)
book.save("trial.xls")
Ich habe dies mit all Ihren Vorschlägen geschrieben. Es erledigt die Arbeit, kann aber leicht verbessert werden.
Wie formatiere ich die in der for-Schleife (list1-Werte) erstellten Zellen als wissenschaftlich oder als Zahl?
Ich möchte die Werte nicht abschneiden. Die im Programm verwendeten tatsächlichen Werte würden nach der Dezimalstelle etwa 10 Stellen haben.
Antworten:
Weitere Erklärungen: https://github.com/python-excel
quelle
xlwt
dient nur zum Schreiben der alten.xls
Dateien für Excel 2003 oder früher. Dies kann veraltet sein (abhängig von Ihren Anforderungen).Verwenden Sie DataFrame.to_excel von Pandas . Mit Pandas können Sie Ihre Daten in funktionsreichen Datenstrukturen darstellen und auch Excel-Dateien einlesen .
Sie müssen Ihre Daten zuerst in einen DataFrame konvertieren und dann in einer Excel-Datei wie folgt speichern:
und die Excel-Datei, die herauskommt, sieht folgendermaßen aus:
Beachten Sie, dass beide Listen gleich lang sein müssen, sonst beschweren sich Pandas. Um dies zu beheben, ersetzen Sie alle fehlenden Werte durch
None
.quelle
xlwt
, bekam aber einenopenpyxl
Fehler. Für alle anderen, die davon verwirrt sind - alles in dem gewünschten Dateityp. In den Pandas (0.12) -Dokumenten heißt es: "Dateien mit einer.xls
Erweiterung werden mit xlwt und Dateien mit einer Erweiterung mit openpyxl.xlsx
geschrieben."xlrd / xlwt (Standard): Python hat diese Funktionalität nicht in seiner Standardbibliothek, aber ich denke, xlrd / xlwt ist die "Standard" -Methode zum Lesen und Schreiben von Excel-Dateien. Es ist ziemlich einfach, eine Arbeitsmappe zu erstellen, Blätter hinzuzufügen, Daten / Formeln zu schreiben und Zellen zu formatieren. Wenn Sie all diese Dinge benötigen, haben Sie möglicherweise den größten Erfolg mit dieser Bibliothek. Ich denke, Sie könnten stattdessen openpyxl wählen und es wäre ziemlich ähnlich, aber ich habe es nicht verwendet.
Um Zellen mit xlwt zu formatieren, definieren Sie a
XFStyle
und geben Sie den Stil an, wenn Sie auf ein Blatt schreiben. Hier ist ein Beispiel mit vielen Zahlenformaten . Siehe Beispielcode unten.Tablib (leistungsstark, intuitiv): Tablib ist eine leistungsstärkere und dennoch intuitive Bibliothek für die Arbeit mit Tabellendaten. Es kann Excel-Arbeitsmappen mit mehreren Blättern sowie anderen Formaten wie CSV, JSON und YamL schreiben. Wenn Sie keine formatierten Zellen (wie Hintergrundfarbe) benötigen, tun Sie sich selbst einen Gefallen, um diese Bibliothek zu verwenden, die Sie auf lange Sicht weiter bringt.
csv (einfach): Dateien auf Ihrem Computer sind entweder Text oder Binär . Textdateien sind nur Zeichen, einschließlich spezieller Zeichen wie Zeilenumbrüche und Registerkarten, und können problemlos überall geöffnet werden (z. B. Notizblock, Webbrowser oder Office-Produkte). Eine CSV-Datei ist eine Textdatei, die auf eine bestimmte Weise formatiert ist: Jede Zeile ist eine Liste von Werten, die durch Kommas getrennt sind. Python-Programme können leicht Text lesen und schreiben, daher ist eine CSV-Datei die einfachste und schnellste Möglichkeit, Daten aus Ihrem Python-Programm in Excel (oder ein anderes Python-Programm) zu exportieren.
Excel-Dateien sind binär und erfordern spezielle Bibliotheken, die das Dateiformat kennen. Deshalb benötigen Sie eine zusätzliche Bibliothek für Python oder ein spezielles Programm wie Microsoft Excel, Gnumeric oder LibreOffice, um sie zu lesen / schreiben.
quelle
Ich habe einige Excel-Module für Python untersucht und festgestellt, dass openpyxl das beste ist.
Das kostenlose Buch Automate the Boring Stuff with Python enthält ein Kapitel über openpyxl mit weiteren Details. Sie können auch die Website Read the Docs lesen . Sie müssen weder Office noch Excel installieren, um openpyxl verwenden zu können.
Ihr Programm würde ungefähr so aussehen:
quelle
CSV steht für durch Kommas getrennte Werte. CSV ist wie eine Textdatei und kann einfach durch Hinzufügen der Erweiterung .CSV erstellt werden
Schreiben Sie zum Beispiel diesen Code:
Sie können diese Datei mit Excel öffnen.
quelle
é
oder enthält中
, sollten Sief.write('\xEF\xBB\xBF')
direkt nach demopen()
. Dies ist die Stückliste ( Byte Order Mark , siehe auch), die von der Microsoft-Software benötigt wird, um die UTF-8-Codierung zu erkennenquelle
Schauen Sie sich auch die folgenden Bibliotheken an:
xlwings - zum Ein- und Auslesen von Daten in eine Tabelle aus Python sowie zum Bearbeiten von Arbeitsmappen und Diagrammen
ExcelPython - ein Excel-Add-In zum Schreiben von benutzerdefinierten Funktionen (UDFs) und Makros in Python anstelle von VBA
quelle
OpenPyxl
ist eine ziemlich schöne Bibliothek zum Lesen / Schreiben von Excel 2010 xlsx / xlsm-Dateien:https://openpyxl.readthedocs.io/en/stable
Die andere Antwort , die sich darauf bezieht, ist die Verwendung der Funktion deperciated (
get_sheet_by_name
). So geht's ohne:quelle
FileNotFoundError: [Errno 2] No such file or directory: 'New.xlsx'
openpyxl.load_workbook
lädt eine Arbeitsmappe, die bereits vorhanden ist. Erstellen Sie eine DateiNew.xlsx
, um diesen Fehler zu vermeiden.Die
xlsxwriter
Bibliothek eignet sich hervorragend zum Erstellen von.xlsx
Dateien. Das folgende Snippet generiert eine.xlsx
Datei aus einer Liste von Diktaten unter Angabe der Reihenfolge und der angezeigten Namen :quelle
Der einfachste Weg, die genauen Zahlen zu importieren, besteht darin, nach den Zahlen in Ihrem
l1
und eine Dezimalstelle einzufügenl2
. Python interpretiert diesen Dezimalpunkt als Anweisung von Ihnen, die genaue Zahl anzugeben. Wenn Sie es auf eine Dezimalstelle beschränken müssen, sollten Sie in der Lage sein, einen Druckbefehl zu erstellen, der die Ausgabe begrenzt. Dies ist ganz einfach:Würde es auf die zehnte Dezimalstelle beschränken, vorausgesetzt, Ihre Daten haben noch zwei Ganzzahlen von der Dezimalstelle.
quelle
Sie können die objektorientierte Python-Bibliothek hfexcel Human Friendly basierend auf XlsxWriter ausprobieren :
quelle
Wenn Sie eine vorhandene Arbeitsmappe ändern möchten, ist die Verwendung von pyoo der sicherste Weg . Sie müssen einige Bibliotheken installiert haben und es dauert ein paar Schritte, um durch die Bibliotheken zu springen. Sobald diese eingerichtet sind, ist dies kugelsicher, da Sie die breiten und soliden APIs von LibreOffice / OpenOffice nutzen.
In meinem Gist erfahren Sie, wie Sie ein Linux-System einrichten und einige grundlegende Codierungen mit pyoo durchführen.
Hier ist ein Beispiel für den Code:
quelle