我使用ReportLab创建了一个表。我想有条件地为细胞着色,这取决于它们的含量(在我的情况下,我希望负数为红色)。要清楚,我有条件代码工作,我无法弄清楚如何添加颜色。我尝试了什么:
<font color="...">
标记。相反,标签在输出中逐字包含。Paragraph(...)
中(this answer中建议)。在这种情况下,单元格文本将在每个字母后面进行换行。Paragraph(...)
中。在这种情况下, reportlab 出错(我相信产生的错误是TypeError: split() missing required positional argument: 'availHeight'
)reportlab.platypus.tables.CellStyle
,但无法弄清楚是否使用它。谷歌没有任何用处,而且 reportlab 文档中没有提到它。TableStyle(...)
规则,但是单元格不在表格中的预定位置(这是所有示例所假设的)。帮助表示赞赏!
答案 0 :(得分:1)
使用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])
是一种可接受的解决方案。您可以遍历数据并在满足条件时添加样式命令。
以下是一个例子:
mutate / gsub