Tôi có một tệp excel (định dạng .xls) với 5 trang tính, tôi muốn thay thế nội dung của trang tính 5 bằng nội dung khung dữ liệu gấu trúc của tôi.Pandas Dataframe to excel sheet
Trả lời
Từ nhu cầu trên của bạn, bạn sẽ cần phải sử dụng cả hai Python (để xuất khẩu gấu trúc khung dữ liệu) và VBA (để xóa nội dung trang tính hiện có và sao chép/dán dữ liệu ngoài).
Với Python: sử dụng phương thức to_csv hoặc to_excel. Tôi khuyên bạn nên sử dụng phương thức to_csv hoạt động tốt hơn với bộ dữ liệu lớn hơn.
# 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=',')
Với VBA: copy và paste nguồn đến phạm vi đích.
May mắn thay, trong VBA bạn có thể gọi các kịch bản Python bằng Shell (giả sử HĐH của bạn là 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
Hoặc, bạn có thể làm ngược lại: chạy macro (ClearExistingContent) bằng Python. Đảm bảo tệp Excel của bạn là một tệp được bật macro (.xlsm) có macro được lưu để chỉ xóa nội dung Bảng 5. Lưu ý: không thể lưu macro bằng tệp 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()
Kiểm tra chức năng to_excel của gấu trúc. Bạn phải đặt tên cho sheet mà bạn muốn viết thư cho - có lẽ nó được gọi là "Bảng 5"
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.to_excel.html
điều này sẽ xóa tất cả các trang tính khác của tôi. không hữu ích –
ouch. Trong trường hợp đó tôi muốn giới thiệu các gói xlwt http://www.python-excel.org/ Thật không may tài liệu là sparce, và sẽ yêu cầu một số công việc để ép buộc khung dữ liệu để một cái gì đó xlwt có thể xử lý. Nó có thể xem xét nguồn để có được những gì bạn muốn. Cũng lưu ý, nó chỉ xử lý các tệp * .xls chứ không phải * .xlsx. – Jody
Cảm ơn bạn đã trả lời. Tôi đã đi qua các tài liệu hướng dẫn của xlwt một vài ngày trước và không thể tìm ra một cách dễ dàng để làm nhiệm vụ. Vì vậy, tôi quyết định làm nhiệm vụ này trong VBA và thả hoàn toàn python. đó là một miếng bánh trong VBA. :) muốn nó đã được dễ dàng trong python cũng –
- 1. Pandas dataframe từ excel có tên là
- 2. Sắp xếp dữ liệu đọc từ Excel sang Pandas DataFrame
- 3. Pandas dataframe to json mà không có chỉ mục
- 4. Pandas: Nhìn lên danh sách các sheet trong một file excel
- 5. Freeze header in pandas dataframe
- 6. Chuyển đổi Pandas dataframe để Dask dataframe
- 7. Pandas: Lấy mẫu DataFrame
- 8. Chuyển đổi Pandas Dataframe
- 9. Pandas: dataframe duy nhất
- 10. pandas DataFrame pivoting issue
- 11. Pandas DataFrame Áp dụng
- 12. Unmelt Pandas DataFrame
- 13. Pandas thứ bậc dataframe
- 14. Dataframe Merge in Pandas
- 15. Py Pandas .format (dataframe)
- 16. Pandas: Tạo DataFrame từ Dòng
- 17. Slice Pandas DataFrame by Row
- 18. Pandas dataframe Descartes tham gia
- 19. nhiều ô từ Pandas dataframe
- 20. bằng len() trong Pandas dataframe
- 21. đèo số hàng như biến trong excel sheet
- 22. Pandas DataFrame concat vs chắp thêm
- 23. Pandas to D3. Serializing dataframes để JSON
- 24. Pandas dataframe và mã hóa ký tự khi đọc tệp excel
- 25. Pandas to_csv() tiết kiệm chậm dataframe lớn
- 26. Pandas viết dataframe vào tệp CSV
- 27. Pandas DataFrame Object Inheritance hoặc Object Use?
- 28. Pandas DataFrame giá trị cập nhật Cột với DataFrame khác
- 29. Áp dụng chức năng trên Pandas dataframe
- 30. Tạo SUMIFS giống như Excel trong Pandas
Muốn một cái gì đó mà python có thể làm một mình mà không sử dụng VBA nhưng không thể có được nó .. Điều này làm việc tốt mặc dù :). –
Hey @Parfait Tôi đã sử dụng mã này (đã sửa đổi cho nhu cầu của riêng tôi) Cảm ơn bạn :) nhưng tôi nhận được lỗi này: 'writer = ExcelWriter ('Corner_Export.xlsx') df_Entry.to_excel (writer, 'Sheet1') df_Apex .to_excel (writer, 'Sheet2') df_Exit.to_excel (writer, 'Sheet3') writer.save() ' ' ImportError: Không có mô-đun có tên openpyxl' – OParker
StackOverflow, món quà tiếp tục tặng! :) Có vẻ như lỗi của bạn có thể không liên quan đến mã được liệt kê. Bạn đang nhập mô-đun được gỡ cài đặt hoặc khai báo sai. Giải pháp này không sử dụng 'openpyxl'. – Parfait