了解Python ReportLab中的表坐标系

时间:2015-11-12 23:46:23

标签: python python-2.7 reportlab

我无法理解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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

Reportlab coordinates for a table (sample)

现在假设您的表大小为(5,4),那么这就是您需要遵循的坐标!