有没有办法在渲染电子表格时忽略执行公式?
目前,sheet.add_row("=10+10")
的计算结果为 20,即使我给出 :formula => :false
或 :type =>:字符串
唯一的黑客方法是提供单引号,但这不是一个漂亮的方法。
最佳答案
我查看了相关gem的源代码,有以下代码:
def is_formula?
@type == :string && @value.to_s.start_with?('=')
end
这意味着任何带有“=”的字符串类型都将被视为公式。唯一接受的类型是日期、字符串、整数、浮点等。任何其他代替 :type => :string 的类型都不会接受。
作为替代方案,我必须在 gem 中打开类 cell_serializer.rb
并以自定义方式重新实现该方法以摆脱 cell.is_formula?查看。
def string_type_serialization(cell, str='')
if cell.is_formula?
formula_serialization cell, str
elsif !cell.ssti.nil?
value_serialization 's', cell.ssti.to_s, str
else
inline_string_serialization cell, str
end
end
重新实现的方法:
def string_type_serialization(cell, str='')
if !cell.ssti.nil?
value_serialization 's', cell.ssti.to_s, str
else
inline_string_serialization cell, str
end
end
我意识到这是一种 hacky 方式,但它会影响系统范围的代码。如果我将来需要任何复杂的东西,我总是可以对一个中心位置进行更改。
关于ruby-on-rails - Rails axlsx gem - 公式不转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40804944/