2015-04-05 14 views

Antwort

26

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() 
+0

Wanted etwas, das Python allein tun kann, ohne VBA zu verwenden, konnte es aber nicht bekommen .. Das funktionierte gut, aber :). –

+0

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

+1

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

0

Ü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

+1

das löscht alle meine anderen Blätter. nicht nützlich –

+0

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

+0

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 –