几天来我一直在寻找替代品,但我找不到。
我粘贴了一段代码,在其中生成了一个包含问题和答案的表格,大多数行只有一列,但在特定情况下,我需要在同一行的多列中显示信息(可以是2、3、4列等)。
是否有任何方法可以将列添加到某些行?o指定每行的列数?或其他替代方法。
当然,谢谢你的帮助
def answer_data(self, style):
answers = []
style_bodytext = style['BodyText']
for a in self._answers:
question = Paragraph(a['question_code'] + " - " + a['question'], style_bodytext)
answer_paragraph = Paragraph(self.serializer_answer(a['answers']), style_bodytext)
answers.append([
question
])
answers.append([
answer_paragraph
])
try:
table_dependent = []
qs = []
aws = []
for d in a['dependent']:
q = Paragraph(d['question_code'] + " - " + d['question'], style_bodytext)
ans = Paragraph(self.serializer_answer(d['answers']), style_bodytext)
qs.append(q)
aws.append(ans)
table_dependent.append(qs)
table_dependent.append(aws)
answers = answers + table_dependent
except KeyError:
pass
table = Table(answers, colWidths=18 * cm)
table.setStyle([
("BOX", (0, 0), (-1, -1), 0.25, colors.black),
('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
('ALIGN', (0, 0), (-1, -1), 'LEFT'),
])
for each in range(len(answers)):
bg_color = colors.white
if each % 2 == 0:
bg_color = colors.lightgrey
table.setStyle(TableStyle([
('BACKGROUND', (0, each), (-1, each), bg_color)
]))
return table
1条答案
按热度按时间5uzkadbs1#
您可以使用
SPAN
表格样式来定义某些列的列跨度,但是您需要事先迭代数据,因为您必须计算出最大列数,并且必须为要合并的列提供空字符串。在official documentation中有一个例子第八十八页:
输出:
文件:
表格样式范围命令
我们的Table类支持spanning的概念,但它的指定方式与html不同。
指示列sc-ec和行sr-er中的单元格应合并为超级单元格,其内容由单元格(sc,sr)确定。其他单元格应存在,但应包含空字符串,否则可能会得到意外结果。
另一种可能性是使用嵌套表,例如,您坚持单列概念,如果您在一行中有多个列,您可以创建一个表,而不仅仅是
Paragraph
。然而,这有一个缺点,即您不能在所有列上都有列标题。