Pandas Dataframe para excel hoja

Tengo un archivo de Excel (formato .xls) con 5 hojas, quiero reemplazar el contenido de la hoja 5 con el contenido de mi dataframe de pandas.

De sus necesidades anteriores, deberá usar tanto Python (para exportar el dataframe de pandas) como VBA (para eliminar el contenido de la hoja de cálculo existente y copiar / pegar datos externos).

Con Python: use los métodos to_csv o to_excel . Recomiendo el método to_csv que funciona mejor con conjuntos de datos más grandes.

# 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=',') 

Con VBA: copie y pegue los rangos de origen a destino.

Afortunadamente, en VBA puede llamar scripts de Python usando Shell (asumiendo que su sistema operativo es 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 

Alternativamente, puede hacer lo contrario: ejecute una macro (ClearExistingContent) con Python. Asegúrese de que su archivo de Excel esté habilitado para macros (.xlsm) uno con una macro guardada para eliminar solo el contenido de la Hoja 5. Nota: las macros no se pueden guardar con archivos 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() 

Echa un vistazo a la función to_excel de pandas. Debe nombrar la hoja en la que desea escribir, tal vez se llame “Hoja 5”

http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_excel.html