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.

20
demandé sur gaurav gurnani 2015-04-05 19:24:49

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() 
46
répondu Parfait 2015-04-05 19:10:12

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

0
répondu Jody 2015-04-05 16:27:00