Skip to content

pathwaysmedical/quick_spreadsheet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

quick_spreadsheet

Sensible defaults for fast Excel spreadsheet creation. Designed for use with Ruby on Rails applications.

Installation

Assuming you have Bundler installed, add the gem to your Gemfile:

gem 'quick_spreadsheet', '0.1.0', git: "git@github.com:pathwaysmedical/quick_spreadsheet.git"

Run the following command to install it:

bundle install

Usage

Call

QuickSpreadsheet.call accepts two syntax variants. Both are argument-order independent.

The first accepts the following options:

 Option          | Format              
 --------------- |:--------------------
 `title`         | `Array<string>`      
 `header_row`    | `Array<string>`        
 `body_rows`     | `Array<Array<string>`
 `file_title` (optional)   | `string`  
 `folder_path` (optional)   | `string`  

The second accepts the following options:

 Option          | Contains              | Format              
 --------------- |:-------------------- |:--------------------
 `sheets`         |               | `Array<`      
 | `title`         | `Array<string>`      
 | `header_row`    | `Array<string>`        
 | `body_rows`     | `Array<Array<string>`
 `file_title` (optional)   |           | `string`  
 `folder_path` (optional)   |           | `string`  

Args

QuickSpreadsheet.args returns the acceptable arguments, as per the tables above.

Examples

Single worksheet example

Here is an example using the simplest QuickSpreadsheet.call possible. To create a spreadsheet of all users by id and name attributes (assuming a Rails ActiveRecord model of User):

QuickSpreadsheet.call(
  title: "List of Users", 
  header_row: ["id","name"], 
  body_rows: User.all.map{|s| [s.id.to_s, s.name.to_s] } 
)

Will create a spreadsheet with this structure:

 List of Users (worksheet name)
 
 Id          | Name              
 ------------|--------------------
 1           | John Doe      
 2           | Jane Doe      
 3           | DHH           

The spreadsheet will be located in the /tmp folder in your app's root directory with the name of the spreadsheet and date time it was created: /tmp/ListofUsers_g2016-02-03-16.09.xls.

Mulitiple worksheets example

Here is an example using the nested sheets syntax, and also the optional folder_path. To create a spreadsheet with a first worksheet being a list of all users by id and name attributes (assuming a Rails ActiveRecord model of User), and a second worksheet of those users' id and email attributes:

QuickSpreadsheet.call(
  sheets: [
    {
      title: "List of Users", 
      header_row: ["id","name"], 
      body_rows: User.all.map{|s| [s.id.to_s, s.name.to_s] } 
    },
    {
      title: "User Emails", 
      header_row: ["id","email"], 
      body_rows: User.all.map{|s| [s.id.to_s, s.email.to_s] } 
    }
  ],
  folder_path: "documents/spreadsheets"
)

Will create a spreadsheet with this structure:

"List of Users" (first worksheet name)
 
 Id          | Name              
 ------------|--------------------
 1           | John Doe      
 2           | Jane Doe      
 3           | DHH           


"User Emails" (second worksheet name)
 
 Id          | Email              
 ------------|--------------------
 1           | john@doe.com      
 2           | jane@doe.com      
 3           | DHH@ror.org           

The spreadsheet will be located in your app's root directory in the folder specified, with the name of the spreadsheet and date time it was created: /documents/spreadsheets/ListofUsers_g2016-02-03-16.09.xls. In this example, the file is named based upon the title of the first worksheet. To give it a different name, pass in the file_title option, just as with the folder_path passed here. With the file_title option, the file is named using file_title minus whitespace, plus a time stamp. So, in the example here, passing a file_title of "User List" would result in a file called /documents/spreadsheets/UserList_g2016-02-03-16.09.xls.

About

Sensible defaults for spreadsheet creation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages