如何使用pandas.to_Excel通过代码创建包含多张工作表的Excel工作簿



通过SQL查询,我得到了许多客户,然后每个客户得到了许多供应商。目标是为每个客户创建一个Excel工作簿,并在此工作簿中,以每个供应商一张的速度复制供应商发票的详细信息。下面的代码允许您创建Excel工作簿和每个供应商一张工作表,但每个供应商的发票副本不起作用。错误在哪里?我的代码:

Clients=list(generator_df['Client'].unique())
for i in range(0,len(Clients)):
if len(Clients[i])!= 0:
workbook = xlsxwriter.Workbook(path+'"'+Clients[i]+".xlsx")
Four = generator_df[['Four']][generator_df['Client'] == Clients[i]].dropna()
Fournisseurs = list(Four['Four'].unique())

for j in range(0,len(Fournisseurs)):
if j == 0:
worksheet = workbook.add_worksheet(Fournisseurs[0])
Detail = detail_df[['Num_facture','Date_facture','Code_produit','Designation','Qte','PU_net','Montant_HT']][(detail_df['Fournisseur'] == Fournisseurs[0]) & (detail_df['Client']==Clients[i])].dropna()
Detail.to_excel(path+'"'+Clients[i]+".xlsx", sheet_name = Fournisseurs[0], header = True, index = False)

else:
Num=str(j)
worksheetNum = workbook.add_worksheet(Fournisseurs[j])
Detail_j = detail_df[['Num_facture','Date_facture','Code_produit','Designation','Qte','PU_net','Montant_HT']][(detail_df['Fournisseur'] == Fournisseurs[j]) & (detail_df['Client'] == Clients[i])].dropna()
Detail_1.to_excel(path+'"'+Clients[i]+".xlsx", sheet_name = Fournisseurs[j], header = True, index = False)    
workbook.close()

在对代码进行多次修改后,问题得到了解决。">

Clients = list(generator_df['Client'].unique())
for i in range(0, len(Clients)):
if len(Clients[i]) != 0:
writer = pd.ExcelWriter(
path+'"'+Clients[i]+".xlsx", engine='xlsxwriter')
Four = generator_df[['Four']][generator_df['Client']
== Clients[i]].dropna()
Fournisseurs = list(Four['Four'].unique())
for j in range(0, len(Fournisseurs)):
if j == 0:
Detail = detail_df[['Num_facture', 'Date_facture', 'Code_produit',
'Designation', 'Qte', 'PU_net', 'Montant_HT']][(detail_df['Fournisseur']
      == Fournisseurs[0]) & (detail_df['Client'] == Clients[i])].dropna()
Detail.to_excel(writer, sheet_name=Fournisseurs[0],
header=True, index=False)
else:
Num = str(j)
Detail_j = detail_df[['Num_facture', 'Date_facture', 'Code_produit',
'Designation', 'Qte', 'PU_net', 'Montant_HT']][(detail_df['Fournisseur'] == Fournisseurs[j]) & (detail_df['Client'] ==
                                                            Clients[i])].dropna()
Detail_j.to_excel(writer, sheet_name=Fournisseurs[j],
header=True, index=False)
writer.save()

相关内容