Как экспортировать данные из модели в файл Excel на rubyonrails - PullRequest
6 голосов
/ 20 июля 2011

Я пытаюсь экспортировать данные из моих моделей в таблицу Excel. Я видел 3 пути

  1. Используя гем таблицы, который я не понимал, как его использовать, примеры, которые я видел, писал в локальный файл, но я ищу генерировать файл каждый раз, когда пользователь нажимает на ссылку.
  2. Создание метода с именем export и выполнение там запроса, затем сделать файл export.xls на мой взгляд, и этот файл создает Таблица, которую я хочу экспортировать в файл Excel, но этот подход не позволяйте мне создавать несколько листов.
  3. Следовал этому руководству, http://oldwiki.rubyonrails.org/rails/pages/HowToExportToExcel, но здесь не показано, как поместить ссылку в представление, мне кажется, что я что-то упускаю в маршрутах, я могу дать github, чтобы вы могли взглянуть на мой код, если это необходимо.

Ответы [ 3 ]

7 голосов
/ 20 июля 2011

Мой выбор - просто создать файл CSV вручную.Например:

File.new("data.csv", "w+") do |f|
  @my_data.each do |data|
    f << [data.title, data.body, ...].join(", ") + "\n"
  end
end

CSV-файл можно открыть с помощью Excel или любой другой программы для работы с электронными таблицами.

1 голос
/ 05 мая 2012

Включаю здесь свой драгоценный камень, но вы можете взглянуть на https://github.com/randym/acts_as_xlsx

Это дает вам немного больше, чем writeexcel или электронную таблицу с точки зрения локализации, графиков, таблиц и форматирования из гема axlsx.

Он также интегрирован с активной областью видимости записи и цепями методов.

Blogpost с подробными примерами использования: http://axlsx.blogspot.com/

http://axlsx.blogspot.jp/2011/12/using-actsasxlsx-to-generate-excel-data.html

http://axlsx.blogspot.jp/2011/12/axlsx-making-excel-reports-with-ruby-on.html

На Github: https://github.com/randym/axlsx

На рубинах: https://rubygems.org/gems/axlsx

На Rubytookbox: https://www.ruby -toolbox.com / projects / axlsx

В основном это включает в себя настройку ответчика в вашем контроллере

    format.xlsx {
      xlsx_package = Post.to_xlsx
      begin
        temp = Tempfile.new("posts.xlsx")
        xlsx_package.serialize temp.path
        send_file temp.path, :filename => "posts.xlsx", :type => "application/xlsx"
      ensure
        temp.close
        temp.unlink
      end
    }  

и следующее на вашей модели

     class Post < ActiveRecord::Base
       acts_as_xlsx

Два сообщения в блоге, приведенные выше, дают довольно четкий обзор.

1 голос
/ 20 июля 2011

Я использую writeexcel в моем последнем проекте Rails. Быстрый и простой в использовании способ экспорта файлов Excel напрямую - без CSV !

Чтобы использовать его непосредственно в ваших представлениях, вам необходимо зарегистрировать writeexcel в качестве обработчика шаблонов - это исключение, что делает моя gist . Затем создайте новый шаблон, например export.xls.writeexcel, вставьте свой код, и все готово.

...