ruby-on-rails - Rails axlsx gem - 公式不转义

标签 ruby-on-rails ruby excel rubygems axlsx

有没有办法在渲染电子表格时忽略执行公式?

目前,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/

相关文章:

ruby-on-rails - 在 RVM 下使用 Ruby 1.9.2 运行 Rails 时出错

java - Ruby 获取最大整数大小值

ruby - 在 Ruby 中将数组哈希转换为哈希数组

java - 从指定行开始读取 Excel 工作表

java - 如何在java中获取表格内容值?

excel - VBA 网络自动化

ruby-on-rails - 如何在不嵌套的情况下从关系向呈现的 JSON 添加属性?

ruby-on-rails - Rails View 辅助函数和 link_to 函数

ruby-on-rails - 关联模型的自定义验证

ruby - 在 Ruby 中通过 UPnP 打开路由器端口