Как записать файл данных pandas в существующую электронную таблицу Excel с поддержкой макросов (.xlsm) - PullRequest
0 голосов
/ 07 июня 2019

В настоящее время я работаю над проектом, который требует от меня записи панды DataFrame в EXISTING файл с поддержкой макросов Excel ( .xlsm ) , а затемсохранил файл как другой ( .xlsm ) файл.

СУЩЕСТВУЮЩИЙ Файл: "Шаблон отчета структуры. Xlsm" , где "Лист1" содержит кнопку 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. откройте 'Structure Report Template.xlsm'
  2. запишите фрейм данных в 'Structure Report Template.xlsm' и "Sheet2"
  3. Сохранить 'Структура отчета Template.xlsm' как 'Структура отчета VGC.xlsm'
...