我目前正在开展一个项目,该项目需要我将 pandas 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')
我想要达到的目标:
- 打开“结构报告模板.xlsm”
- 将数据框写入“结构报告模板.xlsm”和“Sheet2”
- 将“结构报告模板.xlsm”另存为“VGC 结构报告.xlsm”