gpt4 book ai didi

python-3.x - 使用 ReportLab 有条件地为表格单元格着色

转载 作者:行者123 更新时间:2023-12-04 03:01:16 24 4
gpt4 key购买 nike

我已经使用 ReportLab 创建了一个表。我想有条件地为单元格着色,具体取决于它们的内容(在我的情况下,我希望负数为红色)。说清楚,我有条件代码工作,我不知道如何添加颜色。我试过的:

  • 使用 <font color="...">标签。相反,标签被逐字包含在输出中。
  • 将每个单元格包装在 Paragraph(...) 中(建议在 this answer 中)。在这种情况下,单元格文本在每个字母后换行。
  • 将 table 包裹在 Paragraph(...) .在这种情况下,reportlab 错误(我相信由此产生的错误是 TypeError: split() missing required positional argument: 'availHeight' )
  • 我找到了 reportlab.platypus.tables.CellStyle在reportlab源代码中,但无法弄清楚如何使用它。谷歌没有发现任何有用的东西,并且在 reportlab 文档中也没有提到。
  • 我猜 TableStyle(...)可以使用规则,但单元格不在表格中的预定位置(这是所有示例的假设)。

  • 帮助表示赞赏!

    最佳答案

    使用 TableStyle()将是一个可以接受的解决方案。您可以遍历数据并在满足条件时添加样式命令。

    下面是一个例子:

    import random
    from reportlab.lib.pagesizes import letter
    from reportlab.lib.colors import red
    from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

    # Generate random data with positive and negative values as list of lists.
    data = []
    for _ in range(20):
    data.append(random.sample(range(-10, 10), 5))
    table_style = TableStyle([('ALIGN', (0, 0), (-1, -1), 'RIGHT')])
    # Loop through list of lists creating styles for cells with negative value.
    for row, values, in enumerate(data):
    for column, value in enumerate(values):
    if value < 0:
    table_style.add('TEXTCOLOR', (column, row), (column, row), red)

    table = Table(data)
    table.setStyle(table_style)
    pdf = SimpleDocTemplate('example.pdf', pagesize=letter)
    pdf.build([table])

    关于python-3.x - 使用 ReportLab 有条件地为表格单元格着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49015477/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com