Проблемы с производительностью файлов Roo Gem .xlsx - PullRequest
0 голосов
/ 02 февраля 2011

Я получаю неприемлемые проблемы с производительностью, используя roo gem для чтения файла с использованием библиотеки XLSX или XLS из этого гема.

Кто-то может предложить мне альтернативный способ анализа файла .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

Спасибо

1 Ответ

0 голосов
/ 03 февраля 2011

Кстати,

Серверы mongrel зависают для файлов .xls или .xlsx из файлов 3767 строк, например:

002N6V3 1506 RH-128 YE YEMEN МОБИЛЬНАЯ ЧЕРНАЯ 0,5 КИЛОГРАММЫ Y Y

002N6V3 1506 RH-128 YE YEMEN МОБИЛЬНАЯ ЧЕРНАЯ 0,5 КИЛОГРАММЫ Y Y

........

Но он работал хорошо для 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?

...