2011-02-02 1 views
0

にこの宝石からXLSXまたはXLSライブラリを使用してファイルを読み込むためにroo gemを使用すると、許容できないパフォーマンス問題が発生します。Roo gem .xlsxファイルのパフォーマンスに関する問題

誰かが.XLSXファイルを解析する方法の代替案を提案するかもしれませんか?

parsed_file = Excel.new(filename,false, :ignore) if (file_format.upcase 
== "XLS") 
     parsed_file = Excelx.new(filename,false, :ignore) if 
(file_format.upcase == "XLSX") 
     raise t "#{filename} is not an Excel file!" if (!parsed_file) 

     parsed_file.default_sheet = 
parsed_file.sheets[0]#'Sheet2'#oo.sheets[1] 

     first_row = parsed_file.first_row 
     last_row = parsed_file.last_row 
     first_column = parsed_file.first_column 
     last_column = parsed_file.last_column 
     #logger.info "#### Total Rows:#{last_row}, first_row:#{first_row}, 
last_row:#{last_row}, first_column:#{first_column}, 
last_column:#{last_column}" 

     first_row.upto(last_row) do |current_line| 
       # Stuff .... 
     end 

ところでおかげ

答えて

0

を、

雑種サーバは.XLSのためにハングアップしたりなど、3767行のファイルからの.xlsx:

002N6V3 1506 RH-128 YEイエメンモバイルBLACK 0.5キログラムYY

002N6V3 1506 RH-128 YEイエメンMOBILE BLACK 0.5キログラムのYY

........

しかし、1000行以下でうまくいきました。

コンソールでは機能しました。しかし約34分後。ウェブでは容認できない。 スプレッドシートを使用することにより、受け入れ可能な時間がかかり、雑種サーバーがハングしません。おそらく、スプレッドシートよりももっと穏やかな宝石です。

私は次の方法としても、それを使用:

parsed_file = Excelx.new(filename,false, :ignore) if (file_format.upcase == "XLSX") 
    (1..parsed_file.last_row).each { |row| 
     ret << parsed_file.row(row)   
    } 

誰かがこの宝石と同じ問題を経験していますか?後でこのタスクをdelayed_jobsを使用して実行する以外の方法はありますか?

関連する問題