我安装了reportlab,via
pip install reportlab
Run Code Online (Sandbox Code Playgroud)
(也尝试通过
easy_install reportlab
Run Code Online (Sandbox Code Playgroud)
)
..但是我得到了上面的错误.之前还有其他RL导入 - 它是它所反对的.lib.我曾经让RL工作得很好,但是IT重新构建了我的计算机,我正在尝试重建它.脚本工作正常,但我认为RL安装有点时髦.
Reportlab:3.3.0
我在文档中定义了这种风格:
styles.add(ParagraphStyle(name='Table Header', font ='Helvetica-Bold',fontSize=16, alignment=TA_CENTER))
Run Code Online (Sandbox Code Playgroud)
我使用它来定义文本的段落以进入每个表的顶行(以便它们正确包装):
L2sub = [(Paragraph(L[0][0], styles['Table Header']))]
Run Code Online (Sandbox Code Playgroud)
后来,当我添加一个表时,还有一个定义样式的地方:
report.append(Table(data,style=[
('GRID',(0,0),(len(topiclist)-1,-1),0.5,colors.grey),
('FONT', (0,0),(len(topiclist)-1,0),'Helvetica-Bold',16),
('FONT', (0,1),(len(topiclist)-1,1),'Helvetica-Bold',12),
('ALIGN',(0,0),(-1,-1),'CENTER'),
('VALIGN',(0,0),(-1,-1),'MIDDLE'),
('SPAN',(0,0),(len(topiclist)-1,0)),
]))
Run Code Online (Sandbox Code Playgroud)
我的问题是:定义第一行单元格垂直高度的设置在哪里?我有一些问题,文本对于单元格来说太大和/或在单元格中设置得太低,但我无法确定导致它的原因或修复它的方法.我已经改变了两种尺寸,但我不能让细胞成为除了相同高度之外的任何东西.当我只是将文本放入单元格而不是段落时,表格def'n工作得很好,但段落引起了问题.
我使用页面功能和页面模板为文档中页面的一部分制作标题:
templates.append(PageTemplate(id='Overview', frames=frame, onPage=HeaderOverview))
Run Code Online (Sandbox Code Playgroud)
此模板的标头功能:
################################
# Function HeaderOverview - header for overview page
def HeaderOverview(canvas,doc):
canvas.saveState()
headboxh = 15
headboxx = 20
headboxy = 730
headboxw = 570
canvas.rect(headboxx, headboxy, headboxw, headboxh, fill=1)
canvas.setFillColor(colors.black)
canvas.setFont("Helvetica", 14)
canvas.setFillColor(colors.white)
canvas.drawString(headboxx + 15,headboxy+.25*headboxh,"Mathematics")
textWidth = stringWidth("Mathematics", "Helvetica", 12)
canvas.setFont("Helvetica", 12)
canvas.drawString(headboxw - 15 - textWidth,headboxy+.25*headboxh,course)
canvas.restoreState()
Run Code Online (Sandbox Code Playgroud)
这很有效,除了传递的课程变量(随本节中的每一页而变化)是序列中的最后一个变量,因为直到最终构建才真正调用此函数(我认为这就是它的工作方式)。我需要执行的操作是使该值成为页面上的值。如果我可以在编写页面本身时绘制它,那也可以。这是我的尝试:
####################################################################################
# Function makeGradeOverview(course): makes Overview chart for grade
#
def makeGradeOverview(canvas, course):
report.append(NextPageTemplate("Overview"))
report.append(PageBreak())
headboxh = 50
headboxx = 20
headboxy = 600#730
headboxw …Run Code Online (Sandbox Code Playgroud) 我有一个包含不均匀元素的列表列表:
[['a','b','c'], ['d','e'], [], ['f','g','h','i']]
Run Code Online (Sandbox Code Playgroud)
我在Reportlab中显示一个表,我想将它们显示为列.据我了解,RL只采用我上面的行格式表(Platypus)的数据.
我可以使用循环来进行切换,但我觉得有一个列表理解会更快更Pythonic.我也需要在用完元素的列中留一个空格.
所需的产品将是:
[['a','d','','f'],['b','e','','g'],['c','','','h'],['','','','i']]
Run Code Online (Sandbox Code Playgroud)
编辑:示例应该是字符串,而不是数字
谢谢您的帮助!
我知道我可以在内部与画布链接,但我的整个文档都是用 Platypus 设置的。Platypus 是否支持内部链接?如果没有,迁移到画布有多难?
提前致谢!