大虾在制作桌子的情况下设置单元格颜色 正确致电#style column(0) “不行”的情况

问题描述

我正在尝试在更改条件的情况下更改单元格背景色的同时生成表格。我求助于此。这是我要执行的操作的示例:

        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

first row of example table has magenta background

您可以在以下位置参考#style的完整源代码

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

column(3) is styled based on a condition

如果您想要一些稍有不同的内容,那么您现在应该已经足够了解更改代码了。