Wie verketten von drei zeichnet sich xlsx-Dateien mit python?
Hallo, ich würde gerne zu verketten von drei zeichnet sich xlsx-Dateien mit python.
Habe ich versucht, mit openpyxl, aber ich weiß nicht, welche Funktion mir helfen könnte anfügen, drei-Arbeitsblatt in einem.
Haben Sie Ideen, wie das zu tun ?
Vielen Dank
diese Regel funktioniert nicht ... in meiner Erfahrung, die Sie Lesen müssen, in allen 3 arbeiten xls-Dateien . dann manuell Zusammenführen (irgendwie) , schreiben Sie dann in eine neue xls-Datei ...
InformationsquelleAutor Auré Vat | 2013-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ein pandas-basierten Ansatz. (Es ist mit
openpyxl
hinter den kulissen.)Numpy muss 32-bit - Python, nicht 32-bit-Windows. Viele Menschen laufen 32-bit-Python auf 64-bit-Windows. Sie können mehrere Python-Umgebungen auf einem Gerät.
Auch, es gibt mindestens eine gute inoffizielle 64-bit-numpy-build: stackoverflow.com/questions/11200137/...
Diesen code fügen Sie die erste Datei mal mit header, und weiter, ohne header. Die Linie
frames[1:]= [df[1:] for df in frames]
geändert werden muss, umframes_new=[df[1:] for df in frames]
und dann verketten Sie diese neuen Rahmen, die durch die änderungcombined = pd.concat(frames)
zucombined = pd.concat(frames_new)
Nur eine Anmerkung, ich habe versucht, diese mit über 60 Dateien, es hing für eine lange Zeit, und schließlich produziert eine gebrochene Ergebnis. ich habe versucht, die Reduzierung auf nur 2 Dateien und dann bekam eine fehlende Modul-Warnung. nach der Installation openpyxl, und es läuft wieder mit den 60 Dateien, das war super schnell. nicht sicher, warum das passiert ist. aber interessant gotcha.
InformationsquelleAutor DSM
Ich würde verwenden xlrd und xlwt. Vorausgesetzt, Sie buchstäblich nur Notwendigkeit das Anhängen dieser Dateien (anstatt wirkliche Arbeit auf Sie), würde ich etwas wie: Öffnen einer Datei zum schreiben mit
xlwt
, und dann für jeden der anderen drei Dateien, die Schleife über die Daten, und fügen Sie jede Zeile der Ausgabe-Datei. Um Ihnen den Einstieg:Wenn Ihr Dateien alle eine Kopfzeile, die Sie wahrscheinlich nicht wollen, um zu wiederholen, dass, so könnten Sie den code ändern, der oben zu sehen mehr wie dies:
xlrd
umgehen konnte.xlsx
Dateien, aberopenpyxl
könnte. Bin ich Irre?Es kann mit
.xlsx
zumindest hatte ich noch nie Probleme mit ihm.Naja, ich werde sein -- sieht aus wie ich bin hinter der Zeit! Ich hatte nur 0.7.1 installiert, und es gab
XLRDError
s, aber 0.9.0 funktioniert nur auf Sie. Jeden Tag etwas neues lernen!vielen Dank Henry, ist es eine Funktion zum entfernen der Kopfzeile ?
Siehe mein edit, aber denken Sie daran, dass der code, den ich gab, ist nur ein Ausgangspunkt.
InformationsquelleAutor Henry Keiter
Wenn ich kombinieren von excel-Dateien (mydata1.xlsx, mydata2.xlsx, mydata3.xlsx) für die Daten-Analyse, hier ist was ich tun:
Dann, wenn ich wollen speichern Sie es als eine Datei:
InformationsquelleAutor francisedward
Lösung mit
openpyxl
nur (ohne einen Haufen anderer Abhängigkeiten).Dieses Skript kümmern sollte Zusammenwachsen, eine beliebige Anzahl von xlsx-Dokumenten, egal ob Sie ein oder mehrere Blätter. Es wird die Formatierung beibehalten.
Gibt es eine Funktion zum kopieren von Stylesheets in openpyxl, aber es ist nur von/auf die gleiche Datei. Es gibt auch eine Funktion insert_rows irgendwo, sondern von selbst es wird nicht fügen Sie keine Zeilen. Also ich fürchte, wir sind Links zu beschäftigen (mühsam) mit einer Zelle zu einem Zeitpunkt.
So viel wie ich mag nicht mit
for
Schleifen und würde eher etwas kompakt und elegant wie die Liste Verständnis, ich sehe nicht, wie zu tun, dass hier wie dies ist ein side-Effekt zeigen.Kredit diese Antwort auf das kopieren zwischen Arbeitsmappen.
Getestet mit openpyxl 2.5.4, python 3.4.
InformationsquelleAutor p_barill
Können Sie einfach pandas und die os-Bibliothek, dies zu tun.
mergedData DF werden die kombinierten Daten, die Sie exportieren können in einer separaten excel-oder csv-Datei. Gleiche code funktioniert mit csv-Dateien sowie. ersetzen Sie einfach in der IF-Bedingung
InformationsquelleAutor Dhruv Kadia