2017-03-15 75 views
2

我想把一个数据透视表放在第二张纸上的一列和详细信息。但详细资料表正在被xlsxwriter覆盖。xlsxwriter覆盖上一张表

pivot = pd.pivot_table(df2, index=['Customer_Name'], values=['Billed_Net_Value', 'Sales_Order_Net_Value', 'Open_Amount'], aggfunc=np.sum) 
writer = pd.ExcelWriter('SAP.xlsx', engine='xlsxwriter') 
pivot.to_excel(writer, sheet_name='Pivot') 
writer.save() 

filename = 'SAP.xlsx' 
workbook = xlsxwriter.Workbook(filename) 
worksheet = workbook.add_worksheet('Detail') 

回答

1

在您的示例Workbook()构造函数创建其覆盖在大熊猫创建该文件的新文件。

如果你想其他dataframes添加到工作簿,你可以调用to_excel()与其他工作表的名称,像这样:

writer = pd.ExcelWriter('SAP.xlsx', engine='xlsxwriter') 

pivot.to_excel(writer, sheet_name='Pivot') 
df2.to_excel(writer, sheet_name='Sheet2') 
writer.save() 

如果要添加使用XlsxWriter API,您可以按以下做一个工作表:

writer = pd.ExcelWriter('SAP.xlsx', engine='xlsxwriter') 

pivot.to_excel(writer, sheet_name='Pivot') 

workbook = writer.book 
worksheet = workbook.add_worksheet('Detail') 
writer.save() 

参见XlsxWriter文档中的Working with Pandas

2

我想你可以简单地通过推迟.save()调用做到这一点:

pivot = pd.pivot_table(df2, index=['Customer_Name'], values=['Billed_Net_Value', 'Sales_Order_Net_Value', 'Open_Amount'], aggfunc=np.sum) 
writer = pd.ExcelWriter('SAP.xlsx', engine='xlsxwriter') 
pivot.to_excel(writer, sheet_name='Pivot') 
df2.to_excel(writer, sheet_name='Detail') 
writer.save() 
+0

没有工作。仍然覆盖该工作表。 – nomad