【问题标题】:xlsxwriter - Modifying formatting whenever value changesxlsxwriter - 每当值更改时修改格式
【发布时间】:2021-07-04 18:25:54
【问题描述】:

我有一个脚本,它使用 xlsxwriter 生成一个包含大约十二列的工作簿,所有列都来自某个被操纵的 df。

在导出到 Excel 之前,我对 df 进行排序并将其添加到表格中。

 worksheet.add_table(0, 0, max_row, max_col - 1, {'columns': column_settings})

它神奇地创建了一个带有交替颜色(条带)的表格。我希望控制格式的方式如下:

  1. df 按名为case_id 的列(以及其他列)排序
  2. 我希望使用不超过两种背景颜色
  3. 每次 case_id 中的值发生变化时,我都希望切换到不同的颜色。

换句话说 - 按值创建波段。

我考虑过使用conditional formatting,但这并不是我所需要的。我不知道值...在伪代码中,它可以是这样的:

  1. 创建两个变量,一个用于每种所需的格式(format1、format2),并且 temp_format = format1
  2. 逐行查看工作表
    1. 如果 case_id 中的值等于上一行的 case_id,则将 temp_format 切换为另一个。
    2. 将行格式设置为 temp_format

【问题讨论】:

    标签: python pandas xlsxwriter


    【解决方案1】:

    实现了伪代码。

     format1 = workbook.add_format({'bg_color': '#777CF4'})
     format2 = workbook.add_format({'bg_color': '#3FCBFF'})
     tmp_format = format1
     tmp_val = 0
     for i in range(0, max_row):
        if df.loc[i]['chain_id'] != tmp_val:
            tmp_format = format2 if tmp_format == format1 else format1
            tmp_val = df.loc[i]['chain_id']
        worksheet.set_row(i+1, None, tmp_format) #Because writer is +1 comapared to df, due to headers
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多