Les Pandas Dataframe à feuille excel
j'ai un fichier excel (.XLS format) avec 5 feuilles, je veux remplacer le contenu de la feuille 5 par le contenu de mon cadre de données pandas.
2 réponses
à partir de vos besoins ci-dessus, vous devrez utiliser à la fois Python (pour exporter pandas data frame) et VBA (pour supprimer le contenu de la feuille de travail existante et copier/coller des données externes).
avec Python: utilisez le to_csv ou to_excel méthodes. Je recommande la méthode to_csv qui fonctionne mieux avec des ensembles de données plus grands.
# 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=',')
avec VBA:copier et coller fourchette de la source à la destination.
heureusement, en VBA vous pouvez appeler des scripts Python en utilisant Shell (en supposant que votre système D'exploitation est Windows).
Sub DataFrameImport()
'RUN PYTHON TO EXPORT DATA FRAME
Shell "C:\pathTo\python.exe fullpathOfPythonScript.py", vbNormalFocus
'CLEAR EXISTING CONTENT
ThisWorkbook.Worksheets(5).Cells.Clear
'COPY AND PASTE TO WORKBOOK
Workbooks("PythonExport").Worksheets(1).Cells.Copy
ThisWorkbook.Worksheets(5).Range("A1").Select
ThisWorkbook.Worksheets(5).Paste
End Sub
alternativement, vous pouvez faire vice versa: exécuter une macro (ClearExistingContent) avec Python. Assurez-vous que votre fichier Excel est une macro-activée (.xlsm) avec une macro sauvegardée pour supprimer le contenu de la feuille 5 seulement. Note: les macros ne peuvent pas être sauvegardées avec des fichiers csv.
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()
consultez la fonction to_excel de pandas. Vous devez nommer la feuille à laquelle vous voulez écrire - elle s'appelle peut-être"Feuille 5"
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_excel.html