我有一个熊猫数据框,我正在使用to_excel将其导出到Excel文件。所有单元中都有伪随机生成的长度为2的字符串(字母数字或仅数字)。我想将某些单元格的背景设为灰色。每次运行.py文件时,我总是想为完全相同的单元格上色,但是由于单元格的内容基本上是随机的,因此我无法对单元格中的值使用某种条件来对其进行着色。

我查看了xlsx writer documentation on conditional formatting,并尝试将其与this question上可接受的答案结合使用。附带说明一下,如果我只复制粘贴已接受答案的第一个代码块,就可以正常运行!

这是我的代码:

df = pd.DataFrame({'Col1': ['A1', 'B2', '3C', '4D', 'E5', '6F', 'G7'],
                   'Col2': ['00', '01', '02', '03', '04', '05', '06']})
writer = pd.ExcelWriter('shaded.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

shadedFormat  = workbook.add_format({'bg_color': 'gray'})

worksheet.conditional_format('B3:B5', {'type': 'text',
                                      'criteria': 'not equal to',
                                       'value': 'longString',
                                       'format': shadedFormat})

writer.save()


python解释器不会返回任何错误,但是当我打开.xlsx文件时,会弹出一个窗口,提示“我们在'shaded.xlsx'中发现了一些内容问题。您是否希望我们尝试恢复尽可能多的内容?尽我们所能?”回答“是”后,它会弹出另一个窗口,其中显示“已修复的部分:/xl/worksheets/sheet1.xml发生XML错误的部分。灾难性故障,第2行,列1267。”并且没有任何阴影。

我想消除错误,并将指定的单元格涂成灰色。

感谢您的帮助/建议!

最佳答案

错误来自typecriteria

尝试:


type:“文本”
criteria:“包含”


示例:所有包含“ C3”的单元格都已着色。

worksheet.conditional_format('B3:B5', {'type': 'text',
                                       'criteria': 'containing',
                                       'value': '3C',
                                       'format': shadedFormat})


输出:

python - 有没有一种方法可以使用XlsxWriter为包含文本的单元格着色?-LMLPHP

更新:

如果要选择一个单元格,可以使用:

worksheet.conditional_format('B3:B5', {'type': 'text',
                                       'criteria': 'containing',
                                       'value': '',
                                       'format': shadedFormat})


输出:

python - 有没有一种方法可以使用XlsxWriter为包含文本的单元格着色?-LMLPHP

10-06 05:20
查看更多