【发布时间】:2016-04-10 17:42:50
【问题描述】:
我正在尝试创建一个包含 7 个列的表。最后一列包含一个似乎造成错误的长文本。似乎当单元格超过页面大小时,它会抛出异常。
from reportlab.lib.pagesizes import landscape, A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, LongTable, TableStyle, Paragraph
from reportlab.lib import colors
from reportlab.lib.units import mm
from datetime import date
doc = SimpleDocTemplate(response, pagesize=A4, rightMargin=30,leftMargin=30, topMargin=30,bottomMargin=18)
doc.pagesize = landscape(A4)
elements = []
styles = getSampleStyleSheet()
cell_style = styles['BodyText']
cell_style.wordWrap = 1
cell_style.fontName = 'Courier'
cell_style.spaceBefore = 30
cell_style.spaceAfter = 30
title_style = styles['Title']
title_style.fontName = 'Courier'
title = Paragraph('Export Issue Tracker (%s)' % (date.today().isoformat()), title_style)
elements.append(title)
data2 = [[Paragraph(cell, cell_style) for cell in row] for row in data]
table = LongTable(data2, colWidths=(None, None, None, None, None, None, 50*mm))
table_style = TableStyle([('BOX', (0,0), (-1,-1), 0.25, colors.black),
('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('FONTNAME',(0,0),(-1,-1),'Courier'),
('VALIGN',(0,0),(-1,-1),'TOP'),
('ALIGN',(0,0),(-1,0),'CENTER'),
('TEXTCOLOR',(0,0),(-1,0), colors.yellow),
('BACKGROUND', (0,0), (-1,0), colors.gray),
('FONTSIZE',(0,0),(-1,-1),50)] + color_style)
table.setStyle(table_style)
elements.append(table)
doc.build(elements)
但是我收到以下错误:
LayoutError at /issues/export_comments/
Flowable <LongTable@0x7F5AFBBB6560 35 rows x 7 cols(tallest row 2694)> with cell(0,0) containing
u'<Paragraph at 0x7f5afbcb7ef0>9'(769.88976378 x 4782), tallest cell 2694.0 points, too large on page 2 in frame 'normal'(769.88976378 x 535.275590551*) of template 'Later'
我看过很多关于如何使用 KeepTogether、Spacer、LongTable 的帖子,但没有一个适合我。
【问题讨论】:
-
这样最后一列大约 2 英寸宽,采用横向格式。您的错误是告诉您该单元格是 42 英寸高......在 8.5 英寸高的页面上(在您考虑边框之前) !)。我觉得您需要拆分该文本。
-
@mauve 是的,但是有没有办法将文本扩展到下一页而不拆分文本?就像普通桌子一样。
-
谁能提供带有示例数据的最低工作示例代码。