Я перепробовал все мыслимые комбинации из https://xlsxwriter.readthedocs.io/format.html и любой ответ о переполнении стека, который я нашел, связанный с ним.
99,99% вероятность, что это что-то простое, потому что это обычно причина, по которой я зашел в тупик.
Я записываю сводку на первый лист и перебираю подсказки df, чтобы записать число df на отдельные листы (это прекрасно работает)
Я могу применять числовые форматы к сводке, но не в цикле.
writer = ExcelWriter('Players ' + str(date.datetime.now().strftime("%d-%m-%Y %H;%M;%S")) +'.xlsx', engine='xlsxwriter')
summary.to_excel(writer,'Summary',index=False)
workbook = writer.book
worksheet = writer.sheets['Summary']
format1 = workbook.add_format({'num_format': '0.000'})
worksheet.set_column('A:A', 15)
worksheet.set_column('B:B', 15)
worksheet.set_column('C:C', 6, format1)
worksheet.set_column('D:D', 15)
worksheet.conditional_format('C2:C100', {'type': '3_color_scale',
'min_color': "green",
'mid_color': "yellow",
'max_color': "red"})
#Above works
#below doesn't format
#loop through summary and players individual tables
#write an individual table to excel if score > 0
for index, row in summary.iterrows():
for tbl in player_df_dict:
if (row['Player_1'] == tbl[0]) & (row['Player_2'] == tbl[1]) & (row['Score']>0):
player_df_dict[tbl].to_excel(writer,str(tbl[0])+" and "+str(tbl[1]),index=False, columns=cols)
worksheet = writer.sheets[str(tbl[0])+" and "+str(tbl[1])]
#format2 = workbook.add_format({'num_format': '0.000'})
#worksheet.set_column('D:D', 20, format1)
#worksheet.set_column('D:D', 20, format2)
writer.save()
Я пробовал:
- с использованием исходного объекта книги (из сводного кода)
- создание нового объекта книги во всех вариациях внутри и
вне каждой петли
- то же самое для обоих выше с объектом листа
- одинаково для обоих выше с настройкой и применением формата