У меня есть файл excel (формат .xls) с 5 листами, я хочу заменить содержимое листа 5 содержимым моего фрейма данных pandas.
Pandas Dataframe to excel sheet
Ответ 1
Из ваших вышеуказанных потребностей вам нужно будет использовать как Python (для экспорта фрейма
С Python: используйте to_csv или to_excel. Я рекомендую метод to_csv, который лучше работает с более крупными наборами данных.
# 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=',')
С VBA: копировать и вставить источник в пункт назначения диапазоны.
К счастью, в VBA вы можете вызывать скрипты Python с помощью Shell (при условии, что ваша ОС - 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
В качестве альтернативы вы можете сделать наоборот: запустите макрос (ClearExistingContent) с помощью Python. Убедитесь, что ваш файл Excel - это макросъемка (.xlsm) с сохраненным макросом для удаления содержимого только листа 5. Примечание: макросы не могут быть сохранены с файлами 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()
Ответ 2
Проверьте функцию pandas 'to_excel. Вы должны назвать лист, который хотите написать, - возможно, он называется "Лист 5"
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_excel.html