创建新工作表会覆盖通过openpyxl创建的现有工作表

时间:2020-08-16 07:43:02

标签: python-3.x excel openpyxl

我正在尝试使用pandas数据框直接在excel中创建条形图。在同一输出excel中,我想将用于条形图的原始csv保存在单独的工作表中。我的代码:

    wb = openpyxl.Workbook() 
    ws = wb.active 

    for row in dataframe_to_rows(new_df, index=False, header=False):
        ws.append(row)

    chart = BarChart()
    values = Reference(ws, min_col=1, min_row=1, max_col=2, max_row=ws.max_row)
    labels = Reference(ws, min_col=1, min_row=1, max_col=1, max_row=ws.max_row)

    chart.add_data(values)
    chart.set_categories(labels)

    ws.add_chart(chart, "E2")

    wb.save("~/barChart.xlsx")
    writer = pd.ExcelWriter("~/barChart.xlsx", engine='openpyxl')
    df.to_excel(writer, sheet_name="Source_data")
    writer.save()

我遇到的问题是最后三行,它覆盖了生成的条形图。我该如何克服?

1 个答案:

答案 0 :(得分:1)

来自熊猫documentation
ExcelWriter也可以用于附加到现有的Excel文件:

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