我目前正在从事一个项目,该项目要求我将熊猫 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')
我想要实现的目标: