python - Pandas 数据框到 Excel 表

标签 python pandas

我有一个包含 5 张工作表的 Excel 文件(.xls 格式),我想用我的 pandas 数据框的内容替换第 5 张工作表的内容。

最佳答案

根据您的上述需求,您将需要同时使用 Python(导出 pandas 数据框)和 VBA(删除现有工作表内容并复制/粘贴外部数据)。

使用 Python:使用 to_csvto_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:copypaste源到目标范围。

幸运的是,在 VBA 中,您可以使用 Shell 调用 Python 脚本(假设您的操作系统是 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

或者,您也可以反之亦然:使用 Python 运行宏 (ClearExistingContent)。确保您的 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() 

关于python - Pandas 数据框到 Excel 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29459461/

相关文章:

python - 类型错误 : __init__() got an unexpected keyword argument iam_api_key

python - 在 Pandas 中附加到一个空的 DataFrame?

python - 如何使用 Python 将查询导出到 Excel?

python - Pandas 使用 .where() 替换 .groupby() 对象

python - pandas groupby 你得到一列的最大值和另一列的最小值

python - 意外的关键字参数尝试实例化继承自 torch.nn.Module 的类

python - 将数字拆分为四舍五入的数字

python - 在 Python 中从 Google API V3 获取文件元数据

python - 仅针对有数据的时间段绘制 Pandas 日内时间序列

python - 用排序索引替换 Pandas 列