экспорт в Excel, PDF и документ с использованием Ruby on Rails - PullRequest
5 голосов
/ 29 марта 2010

Не могли бы вы помочь мне в экспорте файлов в формат Excel, PDF и DOC через приложения rails?

1 Ответ

8 голосов
/ 29 марта 2010

Для Excel

  1. Я использовал FasterCSV и этот пост для генерации CSV-файлов, которые очень хорошо открываются в Excel.
  2. Вы также можете создать таблицу HTML и использовать файлы iqy для загрузки Excel. Для этого вы можете создать несколько новых псевдонимов, а затем обработать новые форматы .iqy и .excel.

В config / initializer / mime_types.rb

Mime::Type.register_alias "text/html", :excel
Mime::Type.register "text/x-ms-iqy", :iqy

Тогда в вашем контроллере обработайте форматы .iqy и .excel

respond_to do |format|
  format.html
  format.excel
  format.iqy {
    text = "WEB\n1\n%s" % URL_FOR_DATA_VIA_GET, :format => :excel)
    render :text => text
  }
end

Ваш шаблон для формата excel должен быть просто таблицей HTML с данными в нем. Формат iqy просто отображает текст, теперь нужен шаблон действия. Вы можете захотеть файл application.excel.erb, который не имеет всей вашей навигации и т. Д., Поэтому вы получите хорошую чистую HTML-таблицу. Также см. эту статью базы знаний для получения дополнительной информации.

Для PDF

  1. См. Этот другой вопрос SO , предлагаемый плагин выглядит хорошо, но я не использовал его.
  2. Я играл с, но фактически никогда не использовал в производстве, креветка . Казалось, хорошо, просто не использовал его.

Для документов

Я бы предложил вам просто придерживаться простого текста или RTF. Я не знаю никаких плагинов для этого, но, вероятно, что-то есть.

Другой подход

Я с большим успехом использовал JasperReports в проектах на чистом Java. Можно было бы использовать продукт JasperServer, JRuby, вашу собственную оболочку приложения или мост ruby-java для генерации выходных данных с помощью Jasper. Смотрите этот пост . Как только вы перейдете на Java, вы также получите замечательный JExcelApi .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...