【问题标题】:Roo getting number instead of textRoo 获取数字而不是文本
【发布时间】:2014-10-21 19:15:09
【问题描述】:

我正在使用 roo 解析出这样的 excel 表格

worksheet.parse(
        :partNo => "PM_PartNo",
        :salePartNo => "PM_SalesPartNo",
        :appSearchInclude => "PM_AppSearchInclude",
        :desc => "PM_WebApp_Description",
        :brand => "PM_Brand",
        :appSegment => "PM_ApplicationSegment",
        :group => "PM_ProductGroup",
        :design => "PM_ProductDesign",
        :material => "PM_Material",
        :line => "PM_ProdLine",
        :baseSeries => "PM_BaseSeries",
        :colorCode => "PM_ColorCode",
        :series => "PM_Series",
        :weightType => "PM_oz_gram",
        :appRim => "PM_ApplicationRim",
        :coating => "PM_Coating",
        :pcs => "PM_PCSconversion",
        :clean => true
    )  do |hash|

但是,Roo 一直为我提供 PM_PartNo 列的编号 200275577.0。在 Excel 工作表中,此列的所有单元格都设置为文本格式。解析中应该返回的是“200275577”作为文本,而不是 200275577.0 作为数字。有没有办法确保它符合 excel 格式?

【问题讨论】:

  • 你输入的是200275577还是"200275577.0"
  • 在excel中输入为200275577,单元格格式为文本。
  • 不太理想,但你能做到my_var.to_s吗?
  • @JustinWood 这似乎有效。有没有办法在解析中指出这一点或更全局的方式,这样我就不必 to_s 使用的哈希的每个实例?
  • 不幸的是,我不会将这个 gem 用于任何事情。最好的选择可能是post a ticket,如果这不是你认为应该的方式。

标签: ruby-on-rails ruby excel roo-gem


【解决方案1】:

这是open issue 与 roo。用户在问题中提供了一个通用解决方法,或者您可以自己使用.to_i.to_s 转换值。

【讨论】:

  • 我想前导 0 会有问题。 0000505 将是 505.0,.to_i.to_s 将转换为 505。未经测试,但值得谨慎。
  • github.com/Empact/roo/issues/86 供参考。问题似乎也与 Spreedsheet GEM 相关,这是 Roo 的要求。
  • 非常正确,您可能需要使用rjust 来保留前导零
  • 在文档上搜索,似乎没有选项可以指定您想要获取 text 中的值,因为它们出现在单元格中。是否有option 可以使用Roo::Excelx#parse 执行此操作?还是你还需要to_s 每行的值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多