问题描述
我正在尝试在更改条件的情况下更改单元格背景色的同时生成表格。我求助于此。这是我要执行的操作的示例:
idx = 0
pdf.table(myTable) do
style(row(0),:background_color => 'ff00ff')
style(column(0))
while idx <= totalRows
if cells[idx,3] == "No go"
style(cells[idx,3],:background_color => 'fF0000')
else
style(cells[idx,:background_color => '00FF22')
end
idx += 1
end
end
解决方法
正确致电#style
在对虾表的0.2.2版本中,#style
方法是在一个单元格或一个单元格数组上定义的,因此您需要首先获取它。该参数只是所需样式的键和值的哈希。例如,row(0)
是一个单元格数组,因此您可以像这样用洋红色背景设置样式:
pdf.table(myTable) do
row(0).style(:background_color => 'ff00ff')
end
您可以在以下位置参考#style
的完整源代码
- https://github.com/prawnpdf/prawn-table/blob/0.2.2/lib/prawn/table/cells.rb#L139和
- https://github.com/prawnpdf/prawn-table/blob/0.2.2/lib/prawn/table/cell.rb#L227
column(0)
我不确定您要style(column(0))
行做什么,所以我对此不建议。
“不行”的情况
您似乎希望while循环将条件应用于第四列,以使内容为“ No go”的单元格为红色,而其余单元格为绿色。
为此,您可以使用#style
方法中内置的迭代器,而不是while循环。看起来可能像这样:
column(3).style do |cell|
if cell.content == "No go"
cell.style(:background_color => 'ff0000')
else
cell.style(:background_color => '00ff22')
end
end
如果您想要一些稍有不同的内容,那么您现在应该已经足够了解更改代码了。