我有一个“.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 site我知道 roo 需要 roo-xls gem,我在我的 gemfile run bundle install 上设置了它,但它没有帮助:(
当我将格式更改为 xlsx 时效果很好,但我必须以 .xls 格式打开它,我的想法是我没有正确导入 roo-xls gem。
任何帮助,想法都会很有帮助。
最佳答案
我有解决方案:) 改变:
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
关于ruby-on-rails - 如何用roo打开xls文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194427/