Ruby 2.0.0,Rails 4.0.3,Windows 8.1 Update,Roo 1.13.2
我正在尝试使用Roo打开包含嵌入空格的Excel电子表格。到目前为止,我无法做到这一点。我真的不知道这个问题是否仅限于Roo。如果我重命名它以消除空格,我没有问题。我尝试编码,但后来它只是说文件不存在。我可以在文件包含空格时打开它吗?
代码示例:
exceptions = [URI::InvalidURIError, IOError]
puts "f is #{f}"
puts "f exist? #{File.exist?(f)}"
begin
xls = Roo::Spreadsheet.open(f)
rescue *exceptions => e
puts e.message
end
encoded_f = URI.encode(f).to_s
puts "encoded_f is #{encoded_f}"
puts "encoded_f exist? #{File.exist?(encoded_f)}"
begin
xls = Roo::Spreadsheet.open(encoded_f)
rescue *exceptions => e
puts e.message
end
gsub_f = f.gsub(" ", "") # Rename file without spaces
File.rename(f, gsub_f)
puts "gsub_f is #{gsub_f}"
puts "gsub_f exist? #{File.exist?(gsub_f)}"
begin
xls = Roo::Spreadsheet.open(gsub_f)
rescue *exceptions => e
puts e.message
end
输出样本:
f is Whitt Report 2014-07-28-0803.xls
f exist? true
bad URI(is not URI?): Whitt Report 2014-07-28-0803.xls
encoded_f is Whitt%20Report%202014-07-28-0803.xls
encoded_f exist? false
file Whitt%20Report%202014-07-28-0803.xls does not exist
gsub_f is WhittReport2014-07-28-0803.xls
gsub_f exist? true
最后没有给出消息,因为文件打开成功。
答案 0 :(得分:1)
这是由Roo::Spreadsheet#open
方法中调用URI模块的方式引起的。
我发布了此问题的修复程序,现已合并。如果您更新Roo gem,则不应再出现此问题。