Ich habe eine Excel-Datei (.xls-Format) mit 5 Blättern, ich möchte den Inhalt von Blatt 5 durch den Inhalt meines Pandas-Datenrahmens ersetzen.Pandas Dataframe zu Excel Blatt
Antwort
Von Ihrem oben genannten Bedürfnisse, müssen Sie beide Python verwenden (Export Pandas Datenrahmen) und VBA (um vorhandenen Arbeitsblattinhalt zu löschen und externe Daten zu kopieren/einzufügen).
Mit Python: Verwenden Sie die to_csv oder to_excel Methoden. Ich empfehle die to_csv-Methode, die mit größeren Datensätzen besser funktioniert.
# DF TO EXCEL
from pandas import ExcelWriter
writer = ExcelWriter('PythonExport.xlsx')
yourdf.to_excel(writer,'Sheet5')
writer.save()
# DF TO CSV
yourdf.to_csv('PythonExport.csv', sep=',')
Mit VBA: copy und paste der Quelle zum Ziel Bereich.
Glücklicherweise können Sie in VBA Python-Skripts mit Shell aufrufen (vorausgesetzt, Ihr Betriebssystem ist Windows).
Alternativ können Sie umgekehrt tun: Führen Sie ein Makro (ClearExistingContent) mit Python. Stellen Sie sicher, dass es sich bei Ihrer Excel-Datei um eine makroaktivierte Datei (.xlsm) mit einem gespeicherten Makro handelt, um nur Inhalt von Blatt 5 zu löschen. Hinweis: Makros können nicht mit CSV-Dateien gespeichert werden.
import os
import win32com.client
from pandas import ExcelWriter
if os.path.exists("C:\Full Location\To\excelsheet.xlsm"):
xlApp=win32com.client.Dispatch("Excel.Application")
wb = xlApp.Workbooks.Open(Filename="C:\Full Location\To\excelsheet.xlsm")
# MACRO TO CLEAR SHEET 5 CONTENT
xlApp.Run("ClearExistingContent")
wb.Save()
xlApp.Quit()
del xl
# WRITE IN DATA FRAME TO SHEET 5
writer = ExcelWriter('C:\Full Location\To\excelsheet.xlsm')
yourdf.to_excel(writer,'Sheet5')
writer.save()
Überprüfen Sie heraus Pandas to_excel Funktion. Sie haben das Blatt, das Sie schreiben wollen nennen - vielleicht nennt man das „Blatt 5“
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_excel.html
das löscht alle meine anderen Blätter. nicht nützlich –
autsch. In diesem Fall würde ich das xlwt-Paket empfehlen http://www.python-excel.org/ Leider ist die Dokumentation sparce und es wird etwas Arbeit benötigt, um den Datenrahmen zu etwas zu zwingen, mit dem xlwt umgehen kann. Es könnte dauern, die Quelle zu betrachten, um zu bekommen, was Sie wollen. Beachten Sie außerdem, dass es nur * .xls-Dateien und nicht * .xlsx verarbeitet. – Jody
Danke für die Antwort. Ich habe vor einigen Tagen die Dokumentation von xlwt durchgesehen und konnte mir keinen einfachen Weg vorstellen, diese Aufgabe zu erledigen. Also habe ich beschlossen, diese Aufgabe in VBA zu erledigen und Python komplett zu löschen. Es war ein Stück Kuchen in VBA. :) Ich wünschte, es wäre so einfach in Python –
- 1. Schneller Weg, um Excel-Dateien zu Pandas Dataframe zu lesen
- 2. MS Excel-XML-Datei zu Pandas Dataframe lesen?
- 3. Kopie Excel-Blatt (mit Diagrammen) zu einem anderen Excel-Blatt
- 4. Pandas: print pivot_table zu Dataframe
- 5. Vergleichen Pandas DataFrame zu Serie
- 6. Mongo's Gruppenergebnisse zu Pandas DataFrame
- 7. Dataframe PANDAS
- 8. Drools zu Regel Excel-Blatt
- 9. Blatt von einem Pandas ExcelWriter-Objekt zum Datenframe lesen
- 10. akzentuierte Zeichen des Pandas Dataframe Erschienenen in Excel
- 11. Pickle Dump Pandas DataFrame
- 12. XML Pandas Dataframe
- 13. Pandas: Sampling eines DataFrame
- 14. Pandas Dataframe-Unterselektion
- 15. Pandas Dataframe Spalt Inhalt
- 16. Natürlich sortieren Pandas DataFrame
- 17. Serialisierung eines Pandas DataFrame
- 18. Anfügen Spalte Pandas Dataframe
- 19. Flachen verschachtelten Pandas Dataframe
- 20. Pandas Dataframe - Lookup Error
- 21. Schiebefenster über Pandas Dataframe
- 22. Converting Zeitzone Pandas Dataframe
- 23. Pandas DataFrame Pivot-Problem
- 24. Pandas Dataframe Spaltenauswahl
- 25. pandas DataFrame diagonal
- 26. Dataframe Spaltendaten - Pandas - Python
- 27. Abfrage auf Pandas Dataframe
- 28. Pandas DataFrame ApplyMap Methode
- 29. Pandas: Attribute: 'Dataframe' Objekt
- 30. Excel-Blatt Projektreferenzen
Wanted etwas, das Python allein tun kann, ohne VBA zu verwenden, konnte es aber nicht bekommen .. Das funktionierte gut, aber :). –
Hey @Parfait habe ich diesen Code (für meine eigenen Bedürfnisse modifiziert) Danke :) aber ich bekomme diese Fehlermeldung: 'writer = ExcelWriter ('Corner_Export.xlsx') df_Entry.to_excel (Schriftsteller, 'Sheet1') df_Apex .to_excel (Schriftsteller, 'Sheet2') df_Exit.to_excel (Schriftsteller, 'Sheet3') writer.save() '' Import: Kein Modul namens openpyxl' – OParker
Stackoverflow, das Geschenk, das halten! :) Es scheint, dass sich Ihr Fehler nicht auf den aufgelisteten Code bezieht. Sie importieren ein deinstalliertes oder falsch deklariertes Modul. Diese Lösung verwendet nicht "openpyxl". – Parfait