了解Python ReportLab中的表坐标系

问题描述 投票:3回答:3

我无法理解ReportLab表格样式的坐标系。

根据他们的文件:

每个命令的第一个元素是其标识符,第二个和第三个参数确定受到负值坐标影响的单元格框的单元格坐标,如Python索引中那样从限制值向后计数。

坐标为(列,行),它遵循电子表格'A1'模型,但不是更自然(对于数学家)'RC'排序。左上角的单元格是(0,0),右下角是(-1,-1)

如果右下角总是(-1,-1),这是否意味着中间行和列是小数?这似乎没有意义。给出以下示例,位置(1,1)处的绿色开始是如何坐标系从0到-1以及第二个坐标系(-2,-2)如何从原点位置偏移?

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

doc = SimpleDocTemplate("simple_table.pdf", pagesize=letter)
# container for the 'Flowable' objects
elements = []

data= [['00', '01', '02', '03', '04'],
       ['10', '11', '12', '13', '14'],
       ['20', '21', '22', '23', '24'],
       ['30', '31', '32', '33', '34']]
t=Table(data)
t.setStyle(TableStyle([('BACKGROUND',(1,1),(-2,-2),colors.green),
                       ('TEXTCOLOR',(0,0),(1,-1),colors.red)]))
elements.append(t)
# write the document to disk
doc.build(elements)

enter image description here

python python-2.7 reportlab
3个回答
6
投票

我终于明白了,所以发表我自己的答案。你必须认为负坐标系和正坐标系完全相互独立。正系统从左上角的[1] [1]开始,并在向下和向右时增加数字。负系统从[-1] [ - 1]开始,随着向上和向左的减少(较大的负数)。

在这个例子中,('BACKGROUND',(1,1),(-2,-2),colors.green)两个坐标,同时使用不同的相对起始位置定义一个框的左上角和右下角。


1
投票

我发现将单元格视为列表更容易,而不是这个问题的坐标。左上角的单元格是(0,0),本例中的最后一列是4,也可以表示为-1,就像列表一样。此示例中的倒数第二列是3,也可以是-2等。

我发现挑战细胞参考是(col,row)而不是(row,col)这一事实。


1
投票

Reportlab coordinates for a table (sample)

现在假设你的桌子大小(5,4),那么这就是你需要遵循的那种坐标!

© www.soinside.com 2019 - 2024. All rights reserved.