Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用ReportLab对表格单元格进行条件着色_Python 3.x_Reportlab - Fatal编程技术网

Python 3.x 使用ReportLab对表格单元格进行条件着色

Python 3.x 使用ReportLab对表格单元格进行条件着色,python-3.x,reportlab,Python 3.x,Reportlab,我已经使用ReportLab创建了一个表。我希望根据单元格的内容有条件地对其着色(在我的例子中,我希望负数为红色)。要清楚,我有条件代码工作,我不知道如何添加颜色。我所尝试的: 使用标记。相反,标签被逐字包含在输出中 将每个单元格包装在段落(…)(中建议)。在这种情况下,单元格文本在每个字母后换行 将表格包装在段落(…)中。在本例中,reportlab出错(我相信结果是TypeError:split()缺少必需的位置参数:“availHeight”) 我在reportlab源代码中找到了rep

我已经使用ReportLab创建了一个表。我希望根据单元格的内容有条件地对其着色(在我的例子中,我希望负数为红色)。要清楚,我有条件代码工作,我不知道如何添加颜色。我所尝试的:

  • 使用
    标记。相反,标签被逐字包含在输出中
  • 将每个单元格包装在段落(…)(中建议)。在这种情况下,单元格文本在每个字母后换行
  • 将表格包装在
    段落(…)
    中。在本例中,reportlab出错(我相信结果是
    TypeError:split()缺少必需的位置参数:“availHeight”
  • 我在reportlab源代码中找到了
    reportlab.platypus.tables.CellStyle
    ,但无法理解如何使用它。谷歌没有发现任何有用的东西,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])
随机导入
从reportlab.lib.pagesizes导入信函
从reportlab.lib.colors导入红色
从reportlab.platypus导入SimpleDoctTemplate、Table、TableStyle
#生成带有正值和负值的随机数据作为列表列表。
数据=[]
对于范围内的(20):
数据追加(随机抽样(范围(-10,10,5))
table_style=TableStyle([('ALIGN',(0,0),(-1,-1),'RIGHT'))
#循环浏览列表列表,为具有负值的单元格创建样式。
对于行,值,在枚举(数据)中:
对于列,枚举中的值(值):
如果值<0:
表格样式添加('TEXTCOLOR',(列,行),(列,行),红色)
表=表(数据)
table.setStyle(table_样式)
pdf=SimpleDoctTemplate('example.pdf',pagesize=letter)
pdf.build([表])