【问题标题】:Is there a way to color cells containing text using XlsxWriter?有没有办法使用 XlsxWriter 为包含文本的单元格着色?
【发布时间】:2019-12-09 12:10:08
【问题描述】:

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

我想消除错误并将指定的单元格设置为灰色。

感谢您的任何帮助/建议!

【问题讨论】:

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


    【解决方案1】:

    错误来自typecriteria

    试试

    • type: '文字'
    • criteria: '包含'

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

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

    输出

    更新

    如果你想选择一个单元格中的任何内容,你可以使用:

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

    输出

    【讨论】:

    • 这工作得很好,但问题是我不能根据它们包含的 what 为我的单元格着色,因为这是随机的,而是我需要根据 他们在哪里。我在想一些类似于 worksheet.set_column() 的东西,除了一个单元格。
    • 如果你想给一个单元格上色,你可以试试'value':''。我不确定你想做什么。您能否编辑问题并添加输入样本和预期输出以创建Minimal, Reproducible Example
    • 使用'value': '' 成功了!非常感谢你,这让我发疯了。如果你更新你的答案,我会接受。
    • @Missyinvisible 很高兴为您提供帮助。
    猜你喜欢
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    相关资源
    最近更新 更多