【问题标题】:How to write panda dataframe to an existing xlsx file?如何将熊猫数据框写入现有的 xlsx 文件?
【发布时间】:2020-11-05 22:52:46
【问题描述】:

目前,我将我的数据框写入一个存在的 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)

它不起作用。

【问题讨论】:

  • 最后是xlsm。我在编辑中错误地将其更改为 xlsx,但它只是 xlsm。我很抱歉。
  • 我认为 pandas 不支持 xlsm,因为它使用 xlrd 来读取 excel。这可能会帮助stackoverflow.com/questions/55109911/…

标签: python pandas


【解决方案1】:

您可以在 pandas to_excel 函数中指定 python 写入模式。对于追加它是'a'。所以在你的情况下:

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

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 2016-12-25
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2020-04-12
    • 2014-03-28
    相关资源
    最近更新 更多