Невозможно скопировать файлы в файл xlsm - PullRequest
0 голосов
/ 06 июня 2019

Я хотел скопировать листы из пары файлов Excel в другую рабочую книгу xlsm, используя python openpyxl. Я использовал код из Как записать в существующий файл Excel без перезаписи данных (используя панд)?

Однако я не могу записать df в файлы xlsm, он отлично работает с файлом .xlsx

def append_df_to_excel(filename, df, sheet_name='Sheet1', startrow=None,
                       truncate_sheet=False, 
                       **to_excel_kwargs):


    Returns: None

    from openpyxl import load_workbook

    import pandas as pd

   if 'engine' in to_excel_kwargs:
        to_excel_kwargs.pop('engine')

    writer = pd.ExcelWriter(filename, engine='openpyxl')


    try:
        FileNotFoundError
    except NameError:
        FileNotFoundError = IOError


    try:
       writer.book = load_workbook(filename)
       if startrow is None and sheet_name in writer.book.sheetnames:
            startrow = writer.book[sheet_name].max_row

        if truncate_sheet and sheet_name in writer.book.sheetnames:
            # index of [sheet_name] sheet
            idx = writer.book.sheetnames.index(sheet_name)

            writer.book.remove(writer.book.worksheets[idx])
            writer.book.create_sheet(sheet_name, idx)
        writer.sheets = {ws.title:ws for ws in writer.book.worksheets}
    except FileNotFoundError:
        # file does not exist yet, we will create it
        pass

    if startrow is None:
        startrow = 0

    df.to_excel(writer, sheet_name, startrow=startrow, **to_excel_kwargs)


    # save the workbook
    writer.save()

append_df_to_excel('E:\test.xlsm', all_data, sheet_name='sample_test', index=False, startrow=7)

Также возможно ли запустить код заметки Jupyter из Excel с помощью макросов?

...