Reportlab 的网格看起来完全不对
Reportlab's Grid looking completely off
看起来我的 table 内容和网格表现不正常,即网格没有按预期装箱数据。
这是我的代码:
story = []
data = [['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'],
['0.2', '-0.1', '0', '0', '-0.5', '0.6']]
colwidths = (50, 50, 50, 50, 50, 50)
rowheights = (10, 10)
t = Table(data, colwidths, rowheights)
GRID_STYLE = TableStyle(
[('FONTSIZE', (0, 0), (-1, -1), 5),
('GRID', (0, 0), (-1, -1), 0.5, colors.black),
('ALIGN', (1, 1), (-1, -1), 'RIGHT')]
)
t.setStyle(GRID_STYLE)
story.append(t)
doc = SimpleDocTemplate('mydoc.pdf', pagesize=landscape(letter), topMargin=50)
doc.build(story)
这是我得到的 pdf 输出:
有人知道我在这里忽略了什么吗?
除了你的Align (1,1), (-1,-1),它从第1列第1行右对齐(而不是第0列和第0行(从0开始计数)),在我的经验是在指定 TableStyle 时过于冗长。如果您不这样做,样式本身将分配默认值(例如左右填充),这通常不是您要查找的值。因此,为了完全控制,请尝试为所有类别分配一个值并且不要遗漏任何相关类别。
例如我让它看起来更好看
story = []
data = [['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'],
['0.2', '-0.1', '0', '0', '-0.5', '0.6']]
colwidths = (50)
rowheights = (10)
t = Table(data, colwidths, rowheights)
GRID_STYLE = TableStyle(
[('FONTSIZE', (0, 0), (-1, -1), 5),
('GRID', (0, 0), (-1, -1), 0.5, colors.black),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('LEFTPADDING', (0, 0), (-1, -1), 0),
('RIGHTPADDING', (0, 0), (-1, -1), 0),
('TOPPADDING', (0, 0), (-1, -1), 0),
('BOTTOMPADDING', (0, 0), (-1, -1), 0),
('FONTNAME', (0, 0), (-1, -1), 'Helvetica'),
('SIZE', (0, 0), (-1, -1), 7),
('LEADING', (0, 0), (-1, -1), 8.2),
]
)
t.setStyle(GRID_STYLE)
story.append(t)
doc = SimpleDocTemplate('mydoc.pdf', pagesize=landscape(letter), topMargin=50)
doc.build(story)
看起来我的 table 内容和网格表现不正常,即网格没有按预期装箱数据。
这是我的代码:
story = []
data = [['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'],
['0.2', '-0.1', '0', '0', '-0.5', '0.6']]
colwidths = (50, 50, 50, 50, 50, 50)
rowheights = (10, 10)
t = Table(data, colwidths, rowheights)
GRID_STYLE = TableStyle(
[('FONTSIZE', (0, 0), (-1, -1), 5),
('GRID', (0, 0), (-1, -1), 0.5, colors.black),
('ALIGN', (1, 1), (-1, -1), 'RIGHT')]
)
t.setStyle(GRID_STYLE)
story.append(t)
doc = SimpleDocTemplate('mydoc.pdf', pagesize=landscape(letter), topMargin=50)
doc.build(story)
这是我得到的 pdf 输出:
有人知道我在这里忽略了什么吗?
除了你的Align (1,1), (-1,-1),它从第1列第1行右对齐(而不是第0列和第0行(从0开始计数)),在我的经验是在指定 TableStyle 时过于冗长。如果您不这样做,样式本身将分配默认值(例如左右填充),这通常不是您要查找的值。因此,为了完全控制,请尝试为所有类别分配一个值并且不要遗漏任何相关类别。
例如我让它看起来更好看
story = []
data = [['Data1', 'Data2', 'Data3', 'Data4', 'Data5', 'Data6'],
['0.2', '-0.1', '0', '0', '-0.5', '0.6']]
colwidths = (50)
rowheights = (10)
t = Table(data, colwidths, rowheights)
GRID_STYLE = TableStyle(
[('FONTSIZE', (0, 0), (-1, -1), 5),
('GRID', (0, 0), (-1, -1), 0.5, colors.black),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('LEFTPADDING', (0, 0), (-1, -1), 0),
('RIGHTPADDING', (0, 0), (-1, -1), 0),
('TOPPADDING', (0, 0), (-1, -1), 0),
('BOTTOMPADDING', (0, 0), (-1, -1), 0),
('FONTNAME', (0, 0), (-1, -1), 'Helvetica'),
('SIZE', (0, 0), (-1, -1), 7),
('LEADING', (0, 0), (-1, -1), 8.2),
]
)
t.setStyle(GRID_STYLE)
story.append(t)
doc = SimpleDocTemplate('mydoc.pdf', pagesize=landscape(letter), topMargin=50)
doc.build(story)