python: Как скопировать фрейм данных в существующий файл .xlsm - PullRequest
0 голосов
/ 17 июня 2020

Я просмотрел несколько других сообщений, но не смог заставить их работать для меня.

В настоящее время я использую openpyxl, чтобы вставить фрейм данных в строку 75 одной из вкладок (давайте назовем ее «вкладка оценки») существующего файла Excel (.xlsm) с несколькими другими вкладками.

Скрипт выполняет задачу и сохраняет файл, но когда я пытаюсь открыть файл, я получаю следующую ошибку:

Excel cant open the file because the file format or file extension is not valid. Verify the file has not been corrupted and that the file extension matches the format of the file.   

Код запускается как файл, если расширение файла excel .xlsx , но я не могу изменить расширение, так как в Excel есть макрос, который используется конечным пользователем, поэтому он должен быть .xlsm

Кроме того, я не могу создать новая вкладка "оценка" и вставьте на нее df, так как текущая вкладка содержит много других данных.

коды

from openpyxl import load_workbook
import pandas as pd
import numpy as np


filepath = "Filepath - the .xlsm file where you paste the df"
fileSaveAspath = "FileSavePath - save as after pasting"

df = pd.DataFrame(np.random.randint(1,10,(2,3)),columns=['a','b','c'])
workbook = load_workbook(filename=filepath)
sheet = workbook.get_sheet_by_name('Valuation')
from openpyxl.utils.dataframe import dataframe_to_rows

rows = dataframe_to_rows(df, index=False, header=False)

for r_idx, row in enumerate(rows, 1):
    for c_idx, value in enumerate(row, 1):
        sheet.cell(row=r_idx + 74, column=c_idx, value=value)
workbook.save(filename=fileSaveAspath)

как заставить его работать с файлом .xlsm? или другим способом я мог бы вставить фрейм данных в файл .xlsm

...