I can’t figure out why the below code works fine:
#encoding: utf-8
require ‘spreadsheet’
file_path =’\\server100\Folder1\Folder2\oléolé-file.xls’
Spreadsheet.client_encoding = ‘UTF-8’
Spreadsheet.open(file_path) do |book|
puts “sheets: #{book.worksheets.size}”
sheet = book.worksheet(0)
puts “First sheet name: #{sheet.name}”
end
But when I tried to do almost the same, just searching the most recent
file and pass it to the Spreadsheet like that, it doesn’t work. Ruby
replaces back slashes by forward ones what causes a problem on Windows
box:
#encoding: utf-8
require ‘spreadsheet’
folder = ‘’\\server100\Folder1\Folder2’
pattern = ‘oléolé-*.xls’
Dir.chdir(folder)
source_files = Dir.glob(pattern)
puts “source files: #{source_files.inspect}”
recent_file = source_files.max_by { |f1| File.mtime(f1) }
Spreadsheet.client_encoding = ‘UTF-8’
Spreadsheet.open(file_path) do |book|
puts “sheets: #{book.worksheets.size}”
sheet = book.worksheet(0)
puts “First sheet name: #{sheet.name}”
end
The error I get is:
spreadsheet-0.6.8/lib/spreadsheet/excel/reader.rb:1172:in setup': undefined method
read’ for false:FalseClass (NoMethodError)
I’m on Windows XP SP3, Ruby 1.9.3.
Thank you