如何将熊猫数据帧写入现有的xlsx文件?

时间:2020-07-16 09:42:11

标签: python pandas

目前,我将数据帧写入存在的xlsx文件中,并且一切正常。 不过,我想写一个xlsm文件,因为它更方便(在我可以打开xlsx文件并运行宏之后)。

我该怎么做?

这是我写到xlsx文件中的代码。


def append_df_to_excel(filename, df, sheet_name, startrow=None,
                       truncate_sheet=False, 
                       **to_excel_kwargs):
   
    from openpyxl import load_workbook

  

    

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

   


    try:
        # try to open an existing workbook
        writer.book = load_workbook(filename)

        # get the last row in the existing Excel sheet
        # if it was not specified explicitly
        if startrow is None and sheet_name in writer.book.sheetnames:
            startrow = writer.book[sheet_name].max_row

        # truncate sheet
        if truncate_sheet and sheet_name in writer.book.sheetnames:
            # index of [sheet_name] sheet
            idx = writer.book.sheetnames.index(sheet_name)
            # remove [sheet_name]
            writer.book.remove(writer.book.worksheets[idx])
            # create an empty sheet [sheet_name] using old index
            writer.book.create_sheet(sheet_name, idx)

        # copy existing sheets
        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

    # write out the new sheet
    df.to_excel(writer, sheet_name, startrow=startrow, **to_excel_kwargs)

    # save the workbook
    
    
    writer.save()

当我简单地做

def append_df_to_excel("name.xlsx", df)

它可以工作,但是当我改变并做

def append_df_to_excel("name.xlsx", df)

它不起作用。

1 个答案:

答案 0 :(得分:0)

您可以在pandas to_excel函数中指定python写入模式。对于后缀是'a'。因此在您的情况下:

with pd.ExcelWriter('output.xlsx',mode='a') as writer:  
    df.to_excel(writer, sheet_name='Sheet_name_3')