首页 > 解决方案 > 在 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

标签: ruby-on-railsaxlsx

解决方案


让你的风格变成一个哈希,然后修改它。

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))

推荐阅读