Ruby on rails Rails打开xls(excel)文件

Ruby on rails Rails打开xls(excel)文件,ruby-on-rails,ruby,excel,Ruby On Rails,Ruby,Excel,我有一个来自excel的文件b.xls,我需要将它导入我的rails应用程序 我试过打开它 file = File.read(Rails.root.to_s+'/b.xls') 我有这个 file.encoding=>#编码:UTF-8 我有几个问题: 如何在没有此符号的情况下打开(正常语言) 如何将此文件转换为哈希 文件相当大,大约5k行 您必须拥有所有行的数组,然后您可以将其转换为一些散列,如果您愿意的话 我建议使用批量工厂 gem非常简单,依赖于引擎盖下的roogem。 下面是代码

我有一个来自excel的文件
b.xls
,我需要将它导入我的rails应用程序

我试过打开它

file = File.read(Rails.root.to_s+'/b.xls')
我有这个

file.encoding=>#编码:UTF-8

我有几个问题:

  • 如何在没有此符号的情况下打开(正常语言)

  • 如何将此文件转换为哈希

    文件相当大,大约5k行


  • 您必须拥有所有行的数组,然后您可以将其转换为一些散列,如果您愿意的话

    我建议使用
    批量工厂

    gem非常简单,依赖于引擎盖下的
    roo
    gem。
    下面是代码示例

    require 'batch_factory'
    factory = BatchFactory.from_file(
      Rails.root.join('b.xlsx'),
      keys: [:column1, :column2, ..., :what_ever_column_name]
    )
    
    那你就可以了

    factory.each do |row|
      puts row[:column1]
    end
    
    也可以省略指定
    。然后,
    batch\u factory
    将自动从第一行获取标题。但你的钥匙是俄语的。像

    factory.each do |row|
      puts row['Товар']
    end
    
    如果您想将产品名称作为密钥进行散列,您可以这样做

    factory.inject({}) do |hash, row|
      hash.merge(row['Товар'] => row)
    end
    

    您必须拥有所有行的数组,然后您可以将其转换为一些散列,如果您愿意的话

    我建议使用
    批量工厂

    gem非常简单,依赖于引擎盖下的
    roo
    gem。
    下面是代码示例

    require 'batch_factory'
    factory = BatchFactory.from_file(
      Rails.root.join('b.xlsx'),
      keys: [:column1, :column2, ..., :what_ever_column_name]
    )
    
    那你就可以了

    factory.each do |row|
      puts row[:column1]
    end
    
    也可以省略指定
    。然后,
    batch\u factory
    将自动从第一行获取标题。但你的钥匙是俄语的。像

    factory.each do |row|
      puts row['Товар']
    end
    
    如果您想将产品名称作为密钥进行散列,您可以这样做

    factory.inject({}) do |hash, row|
      hash.merge(row['Товар'] => row)
    end
    

    请使用
    Rails.root.join('b.xlsx')
    。它更好。你试过使用一些LIB吗?@是的,我试过
    roo
    它返回一个数组,对我来说没有用
    roo
    有一个返回散列的选项。“它返回一个数组,这是无用的”-而且,将数组数组转换为哈希数组一点也不困难。这实际上是2-3行代码。请使用
    Rails.root.join('b.xlsx')
    。它更好。你试过使用一些LIB吗?@是的,我试过
    roo
    它返回一个数组,对我来说没有用
    roo
    有一个返回散列的选项。“它返回一个数组,这是无用的”-而且,将数组数组转换为哈希数组一点也不困难。这实际上是2-3行代码。