簡體   English   中英

xlsxwriter 工程師下的條件格式

[英]Conditional formatting under xlsxwriter enginer

我在數據框列“index_val”中有六個不同的值,我已將它們導入到同一工作簿的每個新工作表中。

df_dict = {}

    for zone in df['index_val'].unique():
        zone_df = df[df['index_val'] == zone]
        df_dict[zone] = zone_df

    def save_xlsx(df_dict, path):
        with pd.ExcelWriter(path) as writer:
            for key in df_dict:
                df_dict[key].to_excel(writer, key, index=False)
            writer.save()

    save_xlsx(df_dict, 'report.xlsx')

Excel 工作表中生成的輸出尚未格式化以適合列寬。 比如說,第 1 列中的值要求列寬為 92,而 B 列中的值的寬度為 16。我嘗試使用set_column方法,但由於工作表名稱存儲為字典,因此會拋出錯誤。

該數據的一個夾子是這樣的:

name_char   index_val  count    
name1       A          36
name2       A          38
name3       B          76
name4       C          12
name3       C          25
name6       F          42

將有 6 張紙,每張紙的名稱都來自 index_val。 每個工作表都有第一列 name_char,第二列作為唯一的 index_val。 我喜歡將第一列的寬度設置為 92,將第二列的寬度設置為 16。或者,是否有一個過程可以根據每列的最大列值自動設置每列的寬度?

您可以執行以下操作:

df_dict = {}

for zone in df['index_val'].unique():
    zone_df = df[df['index_val'] == zone]
    df_dict[zone] = zone_df

def save_xlsx(df_dict, path):
    with pd.ExcelWriter(path) as writer:
        for key in df_dict:
            df_dict[key].to_excel(writer, key, index=False)
            workbook  = writer.book
            worksheet = writer.sheets[key]
            worksheet.set_column(1, 1, 92)
            worksheet.set_column(2, 2, 16)
        writer.save()

save_xlsx(df_dict, 'report.xlsx')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM