3

我有一个“.xls”文件,我必须用roo打开它,它必须用rake打开。

这是我的 rake 文件:

require 'roo'
namespace :exel do 

  task open: :environment do

    workbook = Roo::Excel.new("lib/tasks/users.xls") 
    password_length = 6
    password = Devise.friendly_token.first(password_length)
    p password
    username = "#{workbook.row(5)[0]}#{workbook.row(5)[1]}".slice!(0..7).downcase
    p username
    test_user = User.create!(email: 'someone@something.com', 
                 f_name: workbook.row(5)[0], 
                 l_name: workbook.row(5)[1],
                 username: username,
                 validity_date: workbook.row(5)[3],
                 :password => password, 
                 :password_confirmation => password)
    p test_user
  end
end

当我运行 rake:exel 时,我得到一个Ole::Storage::FormatError: OLE2 signature is invalid错误。从roo gem 站点我知道 roo 需要roo-xls gem,我将它设置在我的 gemfile run bundle install 中,但它没有帮助:(

当我将格式更改为 xlsx 时效果很好,但我必须将其打开为 .xls,我的想法是我没有正确导入 roo-xls gem。

任何帮助,想法都会非常有帮助。

4

1 回答 1

2

我用解决方案 :) 改变:

workbook = Roo::Excel.new("lib/tasks/users.xls")

至:

workbook = Roo::Spreadsheet.open("lib/tasks/users.xls", extension: :xlsx) 

这样我就不必更改文件,因为它将作为 xlsx 打开,该文件将适合我,另一方面,代码如下:

workbook = Roo::Excelx.new("lib/tasks/users.xls", extension: :xlsx) 

返回错误:TypeError: lib/tasks/users.xls is not an Excel 2007 file

于 2015-10-18T05:08:41.930 回答