J'essaie d'ouvrir un fichier à partir d'une URL à l'aide roo (1.11.0)Comment lire un fichier xlsx ou xls à partir d'une 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>
, mais il semble que il n'y a pas de support pour cette en utilisant roo (il accepte uniquement les noms de chemin)
ne pouvez pas utiliser un nom de chemin de fichier temporaire soit
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
Toute bibliothèque/gem Ruby que je peux utiliser à cette fin? J'ai seulement besoin de lire les fichiers xls et xlsx. Je n'ai pas besoin d'écrire. Depuis que je suis sur Heroku, je ne peux utiliser que des fichiers temporaires Tempfiles.
Avez-vous essayé de passer dans l'URL sans 'open'? Selon la documentation, la façon dont vous êtes supposé instancier un nouvel objet 'Excel' est la suivante:' oo = Excel.new ("http://www.somedomain.com/simple_spreadsheet.xls") ' – fbonetti
J'ai corrigé en supprimant la vérification de l'extension .xlsx dans roo. Bien sûr, le cas d'utilisation assure qu'il s'agit toujours d'un fichier .xlsx donc cela fonctionne pour mon cas. –