如何将熊猫数据框写入现有的启用宏的Excel电子表格(.xlsm)

时间:2019-06-07 11:05:54

标签: python pandas jupyter-notebook pandas.excelwriter

我目前正在从事一个项目,该项目要求我将熊猫 DataFrame 写到已启用宏的Excel文件( .xlsm ,然后将文件另存为( .xlsm )文件。

现有文件: “ Structure Report Template.xlsm” ,其中 “ Sheet1” 包含一个vba按钮。我想将DataFrame写入 “ Sheet2”

我希望有人可以解决这个问题,在此先感谢您的宝贵时间。

我尝试使用 [pd.to_excel] ,但它仅支持'。xls''xlsx'文件。使用'。xlsm'扩展名将导致错误。

我还尝试从 openpyxl 创建工作簿对象,并使用 _ [workbook.add_vba_project('vbaProject.bin')] _ ,但这也会导致相同的结果尝试打开新的Excel文件时出现错误:

  

Excel无法打开文件'myFilename.xlsm',因为文件格式或文件扩展名无效。验证>文件未损坏,并且文件扩展名与文件格式匹配。

import pandas as pd
import openpyxl
import shutil
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows

template='Structure Report Template'
new_file_name='VGC Structure Report'
shutil.copy(template,new_file_name)

writer=pd.ExcelWriter(new_file_name+'.xlsm',engine='xlsxwriter')
vgc_endfile.to_excel(writer,sheet_name='Sheet2')
workbook=writer.book
workbook.filename=new_file_name+'.xlsm'
workbook.add_vba_project('vbaProject.bin')
writer.save()

wb=load_workbook(new_file_name+'.xlsm')
sheet2=wb['Sheet2']
for x in dataframe_to_rows(vgc_endfile):
    sheet2.append(x)
wb.save(new_file_name+'.xlsm')

我想要实现的目标:

  1. 打开“结构报告Template.xlsm”
  2. 将数据框写入“结构报告Template.xlsm” “ Sheet2”
  3. “ Structure Report Template.xlsm” 另存为“ VGC Structure Report.xlsm”

0 个答案:

没有答案