Acts as xlsx: Office Open XML Spreadsheet Generation plugin for active record

Build Status

IRC: irc.freenode.net / #axlsx
Git: http://github.com/randym/acts_as_xlsx
Author: Randy Morgan
Copyright: 2011
License: MIT License
Latest Version: 1.0.3
Ruby Version: 1.8.7 - 1.9.3
Release Date: December 6th 2011

Synopsis

Acts_as_xlsx is an active record plugin for Axlsx. It makes generating excel spreadsheets from any subclass of ActiveRecord::Base as simple as a couple of lines of code.

Feature List

**1. Mixes into active record base to provide to_xlsx

**2. Can work at the end of any series of finder methods.

**3. Can accept any set of find options

**4. Automates localization of column heading with i18n support

**5. Lets you specify columns and methods chains you want to call to populate your table in one go.

**6. Gives you access to the axlsx package so you can add styles, charts and pictures to satisfy those flashy sales guys.

**7. Plays nicely with both ruby 1.8.7 + rails 2.3 as well as ruby 1.9.3 + rails 3

**8. Automatically registers xlsx Mime type for use in respond_to web-service support.

Installing

To install, use the following command:

$ gem install acts_as_xlsx

Usage

Examples

Also see the writeups here: http://axlsx.blogspot.com/

A trivial rails example. In a production environment you will want to you stuff like x_sendfile and Tempfile
http://www.therailsway.com/2009/2/22/file-downloads-done-right

for nginx
http://andrewtimberlake.com/blog/how-to-protect-downloads-but-still-have-nginx-serve-the-files

 #Add the gem to your Gemfile and bundle install
   gem 'acts_as_xlsx'

 # app/models/post.rb
   class Post < ActiveRecord::Base
     acts_as_xlsx
   end

 # app/controllers/posts_controller.rb
   class PostsController < ApplicationController
     # GET posts/xlsx     
     def xlsx
       p = Post.to_xlsx
       p.serialize('public/downloads/posts.xlsx')
       send_file 'public/downloads/posts.xlsx', :type=>"application/xlsx"
     end
   end

 # dont forget to add posts/xslx to your routes!

In addition to dumping the entire table, it is also possible to specify the columns and method chains to execute in genrating your report. # GET posts/xslx def xlsx
p = Post.to_xlsx :columns => [:name, :title, :ranking, :'comments.last.content', :'comments.last.author.name'] p.serialize('public/downloads/posts.xlsx') send_file 'public/downloads/posts.xlsx', :type=>"application/xlsx" end

If your application uses i18n, you can specify the prefix for column labels as well

   # GET posts/xslx
   def xlsx     
     p = Post.to_xlsx :i18n => 'activerecord.attributes'
     p.serialize('public/downloads/posts.xlsx')
     send_file 'public/downloads/posts.xlsx', :type=>"application/xlsx"
   end

For examples on how to use axlsx for custom styles, charts, images and more see:

    [http://rubygems.org/gems/axlsx] (https://rubygems.org/gems/axlsx)

Documentation

This gem is 100% documented with YARD, an exceptional documentation library. To see documentation for this, and all the gems installed on your system use:

  gem install yard
  yard server -g

Specs

This gem has 100% coverage using Test::Unit

Changelog

  • December.6.11: 1.0.3 release

    • Added Mime type definition for rails to support respond_to |format| style handling in controllers.
  • December.3.11: 1.0.2 release Added support for chained method columns like :'model.association.attribute'

  • October.30.11: 1.0.1 release

    • Patch for inclusion error
  • October.30.11: 1.0.0 release

    • First release
  • October.30.11: 1.0.0a release

    • First pre release

Please see the CHANGELOG document for past release information.

Acts_as_xlsx © 2011 by Randy Morgan. Acts_as_xlsx is licensed under the MIT license. Please see the LICENSE document for more information.