Excel Spreadsheet Export for Active Admin
This gem provides xls downloads for Active Admin resources.
This gem borrows heavily from activeadmin-axlsx and to_xls.
Add the following to your Gemfile. All resource index views will now include a link for download directly to xls.
gem 'activeadmin-xls', '~>2.0.0'For Active Admin 1.0 and above, you will also have to update config/initializers/active_admin.rb. Update the download_links setting to include xls:
config.download_links = %i[csv xml json xls]This gem depends on spreadsheet to generate xls files.
Here are a few quick examples of things you can easily tweak.
# app/admin/posts.rb ActiveAdmin.register Post do config.xls_builder.i18n_scope = [:active_record, :models, :posts] end# app/admin/posts.rb ActiveAdmin.register Post do config.xls_builder.column('author_name') do |resource| resource.author.name end end# app/admin/posts.rb ActiveAdmin.register Post do config.xls_builder.header_format = { weight: :bold, color: :blue } end# app/admin/posts.rb ActiveAdmin.register Post do config.xls_builder.delete_columns :id, :created_at, :updated_at end# app/admin/posts.rb ActiveAdmin.register Post do config.xls_builder.only_columns :title, :author endEverything that you do with the config's default builder can be done via the resource DSL.
Below is an example of the DSL
ActiveAdmin.register Post do # i18n_scope and header style are set via options xls(i18n_scope: [:active_admin, :xls, :post], header_format: { weight: :bold, color: :blue }) do # Specify that you want to white list column output. # whitelist # Do not serialize the header, only output data. # skip_header # restrict columns to a list without customization # only_columns :title, :author # deleting columns from the report delete_columns :id, :created_at, :updated_at # adding a column to the report with customization column(:author) { |post| "#{post.author.first_name} #{post.author.last_name}" } # inserting additional data with after_filter after_filter do |sheet| # todo end # inserting data with before_filter before_filter do |sheet| # todo end end endRunning specs for this gem requires that you construct a rails application.
To execute the specs, navigate to the gem directory, run bundle install and run these to rake tasks:
bundle install --gemfile=gemfiles/rails_42.gemfile BUNDLE_GEMFILE=gemfiles/rails_42.gemfile bundle exec rake setup BUNDLE_GEMFILE=gemfiles/rails_42.gemfile bundle exec rake bundle install --gemfile=gemfiles/rails_52.gemfile BUNDLE_GEMFILE=gemfiles/rails_52.gemfile bundle exec rake setup BUNDLE_GEMFILE=gemfiles/rails_52.gemfile bundle exec rake bundle install --gemfile=gemfiles/rails_60.gemfile BUNDLE_GEMFILE=gemfiles/rails_60.gemfile bundle exec rake setup BUNDLE_GEMFILE=gemfiles/rails_60.gemfile bundle exec rake