当前位置: 首页 > 面试题库 >

数据框到Excel工作表

柳高卓
2023-03-14
问题内容

我有一个5页的Excel文件(.xls格式),我想用我的熊猫数据框的内容替换5页的内容。


问题答案:

根据您的上述需求,您将需要同时使用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:将源复制并粘贴到目标范围。

幸运的是,在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。 我有一个工作表,我已经读到一个数据框和应用的正向填充(ffill)方法。 然后我想创建一个包含两个工作表的excel文档。 在应用FFIL方法之前,一个工作表的数据帧中包含数据,而下一个工作表的数据帧应用了FFIL方法。 最终,我打算为数据框的某一列中的每个唯一数据实例创建一个工作表。 然后我想应用一些vba格式的结果-但我不确定哪个dll或插件或东西,我需要调用e

  • 问题内容: 刚开始使用pandas和python。 我有一个工作表,已读入数据框并应用了前向填充(ffill)方法。 然后,我想创建一个包含两个工作表的Excel文档。 在应用填充方法之前,一个工作表将在数据框中包含数据,而在下一个工作表将应用了填充方法的数据框。 最终,我打算为数据框的特定列中的每个数据唯一实例创建一个工作表。 然后,我想对结果应用某些vba格式-但我不确定哪个dll或插件,或者

  • 通过itertuples,我需要将位于excel列(“G7”、“G8”)两行中的两个数据导出到google工作表的两列中。我该怎么做? 最后一行不会更新google表单的第3列

  • 想想有没有一种方法可以使用Drools API将drl文件转换为excel工作表? 我们目前使用的是Drools 5.3,但实际上可以使用任何版本。 提前感谢

  • 我试图读取一个excel文件并将其显示在jsp页面中,我使用下面的代码,但它收到了一条错误消息。 法典: 错误信息 HTTP 状态 500 - 无法编译 JSP 的类: 键入异常报告消息 无法编译 JSP 的类: 说明 服务器遇到内部错误,导致无法满足此请求。异常组织 apache.jasper.Jasper异常: 无法编译 JSP 的类: 在生成的 java 文件中的行 [14] 处发生错误:

  • 2,3和6-12被跳过。下面是我的代码: 我认为这个问题与行“wb1.sheets(1).Range(”a“&Range(”a1“).end(xlDown).row+1)”有关,但我不知道如何解决这个问题。有什么建议吗?谢谢!