[英]Issues with using a for loop with conditional formatting in XlsxWriter
[英]XlsxWriter formatting in nested loop
我已經嘗試過https://xlsxwriter.readthedocs.io/format.html上所有可以想象的組合以及任何我發現與之相關的Stack Overflow答案。
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()
我試過了:
您沒有完全提出mcve
我只能告訴您的是,設置列有效; 我也以兩種略有不同的方式(您+使用writer.sheets[tabname]
,即未為工作表創建顯式變量。
在下面的示例中,兩種情況都將應用格式設置。
另外,在循環之外定義格式-這是書的屬性,而不是圖紙的屬性。
下面的代碼創建一個隨機浮點數據框,將其導出到excel並格式化B和C列-請記住,Python的0列是A列)
import numpy as np
import pandas as pd
writer =pd.ExcelWriter('xlsx_test.xlsx')
format_1 = writer.book.add_format({'num_format': '0.000'})
for i in range(3):
tabname = str(i)
pd.DataFrame(np.random.rand(10,4) ).to_excel(writer, tabname)
writer.sheets[tabname].set_column(1,2, None, format_1)
for i in ["a","b"]:
tabname = i
pd.DataFrame(np.random.rand(10,4) ).to_excel(writer, tabname)
ws = writer.sheets[i]
ws.set_column(1,2, None, format_1)
writer.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.