0

roo (1.11.0) を使用して URL からファイルを開こうとしています。

Foobazs-iMac:pipeline foobazlabs$ irb
irb(main):001:0> require 'roo'
require '=> true
irb(main):002:0> require 'open-uri'
=> true
irb(main):003:0> Roo::Excelx.new(open("https://www.filepicker.io/api/file/xPxn6cu3RZuQdgrx4y72"))
NoMethodError: undefined method `start_with?' for #<Tempfile:0x007ffd091d25c8>

しかし、roo を使用してこれをサポートしていないようです (パス名のみを受け入れます)。

一時ファイルのパス名も使用できません

irb(main):004:0> t = Tempfile.new('temp.xlsx')
=> #<File:/var/folders/q_/q738l9cj3xl90yfs1g8wc4200000gn/T/temp.xlsx20130317-2753-1p3l5l6>
irb(main):005:0> t.binmode
irb(main):006:0> open("https://www.filepicker.io/api/file/xPxn6cu3RZuQdgrx4y72") { |data| t.write   data.read }
=> 13494
irb(main):007:0> Roo::Excelx.new(t.path)
use Roo::Excelx.new to handle .xlsx spreadsheet files. This has .xlsx20130317-2753-1p3l5l6
TypeError: /var/folders/q_/q738l9cj3xl90yfs1g8wc4200000gn/T/temp.xlsx20130317-2753-1p3l5l6 is not an Excel-xlsx file

この目的で使用できる Ruby ライブラリ/gem はありますか? xls および xlsx ファイルのみを読み取る必要があります。書く必要はありません。私は Heroku を使用しているため、実際のファイルではなく一時ファイルしか使用できません。

4

4 に答える 4

1

XLSX、XLS、CSV、およびその他の形式のRemoteTableを使用できます。

require 'remote_table'
RemoteTable.new('https://www.filepicker.io/api/file/xPxn6cu3RZuQdgrx4y72', format: :xlsx).each do |row|
  puts row
end

あなたにあげる:

{"Name"=>"Kristina H. Chung", "E-mail"=>"cheenu.madan@gmail.com", "Phone"=>"8032696336.0", "Org"=>"ABCD"}
{"Name"=>"Paige H. Chen", "E-mail"=>"cheenu.madan@gmail.com", "Phone"=>"7502167067.0", "Org"=>"ABCD"}
{"Name"=>"Sherri E. Melton", "E-mail"=>"cheenu.madan@gmail.com", "Phone"=>"7044576998.0", "Org"=>"ABCD"}
{"Name"=>"Gretchen I. Hill", "E-mail"=>"cheenu.madan@gmail.com", "Phone"=>"7967784377.0", "Org"=>"ABCD"}
{"Name"=>"Karen U. Puckett", "E-mail"=>"cheenu.madan@gmail.com", "Phone"=>"9151299999.0", "Org"=>"ABCD"}
[...]
于 2013-07-12T21:17:22.230 に答える
1

これはあなたが考えていることではないかもしれませんが、私は xls ファイルと xlsx ファイルを読み取るために 2 つのパッケージを使用しています。

于 2013-05-17T13:33:21.410 に答える