Python 3.x 使用ReportLab对表格单元格进行条件着色
我已经使用ReportLab创建了一个表。我希望根据单元格的内容有条件地对其着色(在我的例子中,我希望负数为红色)。要清楚,我有条件代码工作,我不知道如何添加颜色。我所尝试的:Python 3.x 使用ReportLab对表格单元格进行条件着色,python-3.x,reportlab,Python 3.x,Reportlab,我已经使用ReportLab创建了一个表。我希望根据单元格的内容有条件地对其着色(在我的例子中,我希望负数为红色)。要清楚,我有条件代码工作,我不知道如何添加颜色。我所尝试的: 使用标记。相反,标签被逐字包含在输出中 将每个单元格包装在段落(…)(中建议)。在这种情况下,单元格文本在每个字母后换行 将表格包装在段落(…)中。在本例中,reportlab出错(我相信结果是TypeError:split()缺少必需的位置参数:“availHeight”) 我在reportlab源代码中找到了rep
- 使用
标记。相反,标签被逐字包含在输出中 - 将每个单元格包装在段落(…)(中建议)。在这种情况下,单元格文本在每个字母后换行
- 将表格包装在
中。在本例中,reportlab出错(我相信结果是段落(…)
)TypeError:split()缺少必需的位置参数:“availHeight”
- 我在reportlab源代码中找到了
,但无法理解如何使用它。谷歌没有发现任何有用的东西,reportlab文档中也没有提到reportlab.platypus.tables.CellStyle
- 我想可以使用
规则,但是单元格在表中不在预定位置(这是所有示例都假定的)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([表])