了解 Table ReportLab 中的坐标系
Understanding Table Coordinate system in Python ReportLab
我无法理解 ReportLab
table 样式的坐标系。
根据他们的文档:
每个命令的第一个元素是它的标识符,第二个和第三个参数确定单元格
受负坐标影响的细胞框的坐标,从
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)
我终于弄明白了,所以发布了我自己的答案。您必须考虑完全独立于彼此的负坐标系和正坐标系。正面系统从左上角的 [1][1] 开始,随着您向下和向右移动,数字会递增。负值系统从 [-1][-1] 开始,随着您向上和向左移动而减小(更大的负值)。
在这个例子中,('BACKGROUND',(1,1),(-2,-2),colors.green)
这两个坐标,同时使用不同的相对起始位置定义了一个盒子的左上角和右下角。
我发现将单元格视为列表而不是此问题的坐标更容易。左上角的单元格是 (0,0),此示例中的最后一列是 4,也可以表示为 -1,就像列表一样。此示例中的倒数第二列是 3,也可以是 -2,依此类推。
我发现单元格引用是 (col, row) 而不是 (row, col) 这一事实具有挑战性。
现在假设您的 table 大小为 (5,4),那么这就是您需要遵循的坐标!
我无法理解 ReportLab
table 样式的坐标系。
根据他们的文档:
每个命令的第一个元素是它的标识符,第二个和第三个参数确定单元格 受负坐标影响的细胞框的坐标,从 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)
我终于弄明白了,所以发布了我自己的答案。您必须考虑完全独立于彼此的负坐标系和正坐标系。正面系统从左上角的 [1][1] 开始,随着您向下和向右移动,数字会递增。负值系统从 [-1][-1] 开始,随着您向上和向左移动而减小(更大的负值)。
在这个例子中,('BACKGROUND',(1,1),(-2,-2),colors.green)
这两个坐标,同时使用不同的相对起始位置定义了一个盒子的左上角和右下角。
我发现将单元格视为列表而不是此问题的坐标更容易。左上角的单元格是 (0,0),此示例中的最后一列是 4,也可以表示为 -1,就像列表一样。此示例中的倒数第二列是 3,也可以是 -2,依此类推。
我发现单元格引用是 (col, row) 而不是 (row, col) 这一事实具有挑战性。
现在假设您的 table 大小为 (5,4),那么这就是您需要遵循的坐标!