2013-05-02 29 views
2

我的代碼的目標是處理目錄中的所有.xls文件,並將它們全部轉換爲.csv。這在過去有效,但在更新Ruby和Roo之後,它顯示下面的錯誤。我正在使用Ruby 1.9.3-p362和Roo 1.11.2。無法使用Roo將.xls轉換爲.csv

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 

任何幫助表示讚賞。謝謝。

回答

4

rooRoo::名稱空間內有Excel類。您需要Roo::Excel

older versions沒有命名空間的類來代替的Excel所有實例Roo::下,這樣可以解釋爲什麼更新後您的代碼破壞。

新庫在這裏:https://github.com/Empact/roo

+0

w00t!完美的作品。謝謝。 – analyticsPierce 2013-05-02 19:56:02