有没有办法使用XlsxWriter为包含文本的单元格着色?

时间:2019-07-31 22:55:48

标签: python python-3.x pandas xlsx xlsxwriter

我有一个熊猫数据框,我正在使用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。”并且所有列均无阴影。

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

谢谢您的帮助/建议!

1 个答案:

答案 0 :(得分:1)

错误来自typecriteria

尝试

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

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

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

输出

enter image description here

更新

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

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

输出

enter image description here