首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reportlab生成多个表

Reportlab生成多个表
EN

Stack Overflow用户
提问于 2015-09-10 15:25:28
回答 1查看 3.7K关注 0票数 4

我正在使用Reportlab生成pdf格式的表。但是,我已经到了需要在同一个文件中包含多个表的地步,其中一些表跨越多个页面。我认为跨多个页面的表正在为我产生错误。

我使用这个答案中的格式,将我的代码建立在:Multiple tables (5) one one page using ReportLab

产生错误的代码:

代码语言:javascript
复制
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)

从运行中收到的错误:

代码语言:javascript
复制
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'

我确实找到了类似的错误https://stackoverflow.com/a/27580676/4033176的解决方案,但我从未定义过间隔。

是否有一致的方法使用Reportlab生成一个包含多个表的pdf文件,其中一些表比页面长?(除了合并pdf档案外)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-15 15:39:27

问题是你在嵌套桌子。这意味着长表t2使单个单元格比页长--这是给您带来错误的原因,而不是表比页长。

替换

代码语言:javascript
复制
data = [[t1],[t2]]
overallTable = Table(data)
elements.append(overallTable) 

使用

代码语言:javascript
复制
elements.append(t1)
elements.append(t2)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32505917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档