python - Reportlab:reportlab中表列的动态颜色(存储在django模型中的颜色)

标签 python reportlab

<分区>

我有一个名为 TestResults 的 Django 模型

模型.py
Class TestResults(models)

   chemical_name charfield
   value    floatfield
   unit  charfield
   method  charfield
   normal_limit charfield
   caution_limit charfield
   color charfield

现在,

下面的代码将生成 oils 表,其中包含以下字段。

View .py
 fields = ('Test Name', 'Value', 'Unit', 'Method',
           'Normal Limit', 'Caution Limit')
 all_oils = [(test.chemical_name, test.value, test.unit, test.method,
                 test.normal_limit, test.caution_limit)
                 for test in TestResult.objects.all())]
oil_table = Table([fields] + all_oils
oil_table.setStyle(TableStyle([('BACKGROUND', (0, 0), (-1, 0), '#a7a5a5'),
                              ('FONTSIZE', (0, 0), (-1, 0), 6),
                              ('GRID', (0, 0), (-1, -1), 2, '#a7a5a5'),
                              ('FONTSIZE', (0, 0), (-1, -1), 8),
                              ('FONTNAME',(1,1),(1,-1),'Times-Bold')]))

现在如何为每一列提供动态颜色。假设我的 TestResult 模型有颜色字段 (I,e color=red)

在报告中我想要来自模型对象的第二列的动态颜色

我怎样才能做到这一点?

最佳答案

也许我遗漏了什么,但这看起来真的很简单。

在您的对象中,将您想要的颜色存储在变量中,例如 color 作为有效的 ReportLab 颜色规范(例如,十六进制颜色值字符串)。然后当你构建你的报告时,如果你想设置背景颜色,只需为列中的所有单元格设置它。例如,要设置列 x 的背景,请将以下内容添加到您的 TableStyle:

('BACKGROUND', (x, 0), (x, -1), anObject.color)

您可以在 TableStyle 中放入任意数量的 'BACKGROUND' 样式,这样您就可以为要更改其颜色的每一列执行此操作。

关于python - Reportlab:reportlab中表列的动态颜色(存储在django模型中的颜色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8156280/

相关文章:

python - ReportLab 无法在 Azure Python 网站上运行

python - reportlab - 无法将物理打印页面的上边距设置为零

Python reportlab 将图像插入表格

python - 将掩码结果转换为不同的随机数

python - 使用 python 使用 azure cosmos db SQL API 处理地理空间数据

python 解压缩文件并提供 wxPython 状态栏更新

python - 在清理数据的同时加快 pandas 的迭代速度

python - 如何在 PDF 的底部(页脚)添加多行?

python - 向多个用户推送带有视频的同一张卡

Python 与 ReportLab。如何用 SimpleDocTemplate 写一行?