2013-05-02 2 views
2

내 코드의 목표는 디렉토리의 모든 .xls 파일을 처리하고 모두 .csv로 변환하는 것입니다. 이것은 과거에는 효과가 있었지만 Ruby와 Roo를 업데이트 한 후에 아래 오류를 보여줍니다. Ruby 1.9.3-p362와 Roo 1.11.2를 사용하고 있습니다. 어떤 도움에 감사드립니다Roo를 사용하여 .xls를 .csv로 변환 할 수 없습니다.

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

: 나는 다음과 같은 오류 메시지가 모든 파일에 대해

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 

. 감사.

답변

4

rooRoo:: 네임 스페이스 내에 Excel 클래스를가집니다. 당신은 당신의 코드가 업데이트 후 파산 이유를 설명 할 수 있도록, Roo::에서 Roo::Excel

older versions하지 않았다 네임 스페이스 클래스와 Excel의 모든 인스턴스를 교체해야합니다.

새 저장소는 여기에 있습니다. https://github.com/Empact/roo

+0

w00t! 완벽하게 작동합니다. 감사. – analyticsPierce

관련 문제