无法使用Roo将.xls转换为.csv

时间:2013-05-02 17:22:36

标签: ruby ruby-roo

我的代码的目标是处理目录中的所有.xls文件并将它们全部转换为.csv。这在过去有效,但在更新Ruby和Roo后,它显示下面的错误。我使用的是Ruby 1.9.3-p362和Roo 1.11.2。

require 'rubygems'
require 'csv'
require 'iconv'
require 'mysql2'
require 'mysql'
require 'roo'

begin
    Dir["#{@work_path}/*.xls"].each do |file|  
        begin
          file_path = "#{file}"
          file_basename = File.basename(file, ".xls")
          xls = Excel.new(file_path)
          xls.to_csv("#{@kenshoo_work_path}#{file_basename}.csv")
          @log.info("Converted file #{file}")
          FileUtils.remove(file)
          @log.info("Deleted file #{file}")
        rescue Exception => e
          @log.warn("Unable to convert file: #{file_basename} into csv because #{e.message}")
        end
    end
end

对于每个文件,我收到以下错误消息:

Unable to convert file: #{file} into csv because uninitialized constant Excel

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:4)

rooExcel命名空间中有Roo::个类。您需要将Excel的所有实例替换为Roo::Excel

older versions下的https://github.com/Empact/roo没有命名空间类,因此可以解释更新后代码损坏的原因。

新存储库位于:{{3}}