У меня есть файл excel (формат .xls) с 5 листами, я хочу заменить содержимое листа 5 содержимым моего кадра данных pandas.Pandas Dataframe to excel sheet
ответ
Из выше ваших потребностей, вы должны будете использовать как Python (для экспорта панд кадра данных) и VBA (для удаления существующего содержимого листка и копирования/вставки внешних данных).
С 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: copy и paste источник диапазонов назначения.
К счастью, в 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()
Проверьте функцию pandas 'to_excel. Вы должны назвать страницу, которую вы хотите записать - возможно, это называется «Лист 5»
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_excel.html
это удаляет все мои другие листы. не полезно –
ouch. В этом случае я бы рекомендовал пакет xlwt http://www.python-excel.org/ К сожалению, документация разрежена и потребует некоторой работы по принуждению кадра данных к чему-то, что может обрабатывать xlwt. Возможно, вы посмотрите на источник, чтобы получить то, что хотите. Также обратите внимание: он обрабатывает файлы * .xls, а не * .xlsx. – Jody
Спасибо за ответ. я просмотрел документацию xlwt пару дней назад и не смог найти простой способ выполнить задачу. Итак, я решил выполнить эту задачу в VBA и полностью удалить python. это был кусок пирога в VBA. :) Желаю, чтобы это было так просто в python, а также –
- 1. export gridview to excel sheet
- 2. Pandas dataframe to AnguarJS
- 3. Pandas Dataframe to RDD
- 4. Pandas DataFrame to CSV
- 5. Hbase1.2.1 to pandas dataframe
- 6. python pandas to excel error
- 7. Pass Pandas DataFrame to Scipy.optimize.curve_fit
- 8. hdf5 file to pandas dataframe
- 9. Python: Pandas DataFrame to CSV
- 10. Python Dictionary to Pandas Dataframe
- 11. python pandas dataframe to dictionary
- 12. Pandas duplicate indexes to dataframe
- 13. Python Pandas Dataframe to XML
- 14. python request.text to pandas dataframe
- 15. NLTK ConditionalFreqDist to Pandas dataframe
- 16. COPY TO excel Sheet in foxpro
- 17. export gridview rows to excel sheet
- 18. скачать fwrite ($ file, $ data1); to excel sheet
- 19. python dataframe to excel
- 20. Проблема в написании pandas Dataframe to excel file
- 21. pandas dataframe xlsxwriter write to excel: обрабатывать ноль как пустой
- 22. Pandas dataframe к существующей книге excel
- 23. VBA to greyout sheet
- 24. python, pandas, dataframe, rows to columns
- 25. pandas dataframe to R using pyRserve
- 26. Append Numpy ndarray to pandas dataframe
- 27. Convert Pandas DataFrame Column To R Factors
- 28. Pandas DataFrame to PostgreSQL с использованием Psycopg2
- 29. Python Pandas dict to dataframe (не работает)
- 30. long-format pandas dataframe to dictionary
Требуется то, что python может сделать самостоятельно, не используя VBA, но не смог его получить .. Это работало нормально, хотя :). –
Hey @Parfait Я использовал этот код (модифицированный для моих собственных нужд) Спасибо :), но я получаю эту ошибку: 'writer = ExcelWriter ('Corner_Export.xlsx') df_Entry.to_excel (writer, 'Sheet1') df_Apex .to_excel (автор, 'Лист2') df_Exit.to_excel (автор, 'Sheet3') writer.save() '' ImportError: Нет модуль с именем openpyxl' – OParker
StackOverflow, подарок, который продолжит давать! :) Кажется, ваша ошибка может не соответствовать указанному коду. Вы импортируете удаленный или ошибочно объявленный модуль. Это решение не использует 'openpyxl'. – Parfait