在Ruby on Rails中使用axlsx时是否可以修改现有样式对象?

时间:2018-12-28 10:29:58

标签: ruby-on-rails axlsx

我正在使用axlsx gem生成Excel工作表。

我的Excel中有多种样式。下面是一个示例

style1 = wb.styles.add_style(:font_name => "Arial", :sz => 10, :i => true, :fg_color => "A6A6A6")

现在,我需要编写一个将这种样式(和货币值)作为参数的函数。如果货币值是负数(所有其他样式,例如背景色,字体大小,斜体等都应保持不变),则此函数应仅将fg_color(字体颜色)修改为红色,并返回修改后的样式。

是否可以实现相同的目标?

def get_currency_style(style, currency_value)
  if currency_value < 0
    new_style = <modify ONLY the font color to red in 'style' object>
  else
    new_style = style
  end

  return new_style
end

1 个答案:

答案 0 :(得分:1)

让您的样式成为哈希,然后对其进行修改。

def get_currency_style(style, currency_value)
  if currency_value < 0
    style[:fb_color] = 'red'
  end

  return style
end

style1 = wb.styles.add_style(get_currency_style({ font_name: "Arial", sz: 10, i: true, fg_color: "A6A6A6" }, -10))