Reportlab生成多张表
Reportlab generate multiple tables
我正在使用 Reportlab 生成 pdf 格式的表格。但是,我已经到了需要在同一个文件中包含多个表的地步,其中一些表跨越多个页面。我认为跨多个页面的表格对我来说会产生错误。
我使用了这个答案中的格式,将我的代码基于:Multiple tables (5) one one page using ReportLab
产生错误的代码:
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter, inch
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
doc = SimpleDocTemplate("test.pdf")
elements = []
data1= [['00', '01', '02', '03', '04','10', '11', '12', '13', '14'],
['10', '11', '12', '13', '14', '10', '11', '12', '13', '14'],
['20', '21', '22', '23', '24', '10', '11', '12', '13', '14'],
['30', '31', '32', '33', '34', '10', '11', '12', '13', '14']]
t1=Table(data1)
t1.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
]))
data2= [[x] for x in range(40)]
t2=Table(data2)
t2.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
]))
data = [[t1],[t2]]
overallTable = Table(data)
elements.append(overallTable)
doc.build(elements)
从 运行 收到的错误:
Traceback (most recent call last):
File "", line 267, in <module>
Func1(List)
File "", line 207, in Func1
doc.build([overallTable])
File "C:\Python34\lib\site-packages\reportlab\platypus\doctemplate.py", line 1171, in build
BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
File "C:\Python34\lib\site-packages\reportlab\platypus\doctemplate.py", line 927, in build
self.handle_flowable(flowables)
File "C:\Python34\lib\site-packages\reportlab\platypus\doctemplate.py", line 829, in handle_flowable
raise LayoutError(ident)
reportlab.platypus.doctemplate.LayoutError: Flowable <Table@0x033F2AF0 1 rows x 4 cols(tallest row 6648)> with cell(0,0) containing
"<Table@0x03405F50 10 rows x 3 cols(tallest row 18)> with cell(0,0) containing\n'Local'"(1100.24 x 6648), tallest cell 6648.0 points, too large on page 2 in frame 'normal'(439.27559055118104 x 685.8897637795275*) of template 'Later'
我确实找到了解决类似错误的方法,但我从未定义过间隔符。
是否有一种一致的方法可以使用 Reportlab 制作包含多个表格的 pdf 文件,其中有些表格比一页还长? (合并 pdf 文件除外)
问题是您在嵌套 table。这意味着长 table t2
使 单个单元格 比页面长 - 这就是给您错误的原因,而不是 table 比一页还长。
替换
data = [[t1],[t2]]
overallTable = Table(data)
elements.append(overallTable)
与
elements.append(t1)
elements.append(t2)
我正在使用 Reportlab 生成 pdf 格式的表格。但是,我已经到了需要在同一个文件中包含多个表的地步,其中一些表跨越多个页面。我认为跨多个页面的表格对我来说会产生错误。
我使用了这个答案中的格式,将我的代码基于:Multiple tables (5) one one page using ReportLab
产生错误的代码:
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter, inch
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
doc = SimpleDocTemplate("test.pdf")
elements = []
data1= [['00', '01', '02', '03', '04','10', '11', '12', '13', '14'],
['10', '11', '12', '13', '14', '10', '11', '12', '13', '14'],
['20', '21', '22', '23', '24', '10', '11', '12', '13', '14'],
['30', '31', '32', '33', '34', '10', '11', '12', '13', '14']]
t1=Table(data1)
t1.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
]))
data2= [[x] for x in range(40)]
t2=Table(data2)
t2.setStyle(TableStyle([('INNERGRID', (0,0), (-1,-1), 0.25, colors.black),
('BOX', (0,0), (-1,-1), 0.25, colors.black),
]))
data = [[t1],[t2]]
overallTable = Table(data)
elements.append(overallTable)
doc.build(elements)
从 运行 收到的错误:
Traceback (most recent call last):
File "", line 267, in <module>
Func1(List)
File "", line 207, in Func1
doc.build([overallTable])
File "C:\Python34\lib\site-packages\reportlab\platypus\doctemplate.py", line 1171, in build
BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
File "C:\Python34\lib\site-packages\reportlab\platypus\doctemplate.py", line 927, in build
self.handle_flowable(flowables)
File "C:\Python34\lib\site-packages\reportlab\platypus\doctemplate.py", line 829, in handle_flowable
raise LayoutError(ident)
reportlab.platypus.doctemplate.LayoutError: Flowable <Table@0x033F2AF0 1 rows x 4 cols(tallest row 6648)> with cell(0,0) containing
"<Table@0x03405F50 10 rows x 3 cols(tallest row 18)> with cell(0,0) containing\n'Local'"(1100.24 x 6648), tallest cell 6648.0 points, too large on page 2 in frame 'normal'(439.27559055118104 x 685.8897637795275*) of template 'Later'
我确实找到了解决类似错误的方法,但我从未定义过间隔符。
是否有一种一致的方法可以使用 Reportlab 制作包含多个表格的 pdf 文件,其中有些表格比一页还长? (合并 pdf 文件除外)
问题是您在嵌套 table。这意味着长 table t2
使 单个单元格 比页面长 - 这就是给您错误的原因,而不是 table 比一页还长。
替换
data = [[t1],[t2]]
overallTable = Table(data)
elements.append(overallTable)
与
elements.append(t1)
elements.append(t2)