Module: SpreadsheetRails::SpreadsheetRailsHelper

Defined in:
lib/spreadsheet_rails.rb

Instance Method Summary collapse

Instance Method Details

#render_io(writer) ⇒ Object

Renders to a string any object that will #write to an IO object



37
38
39
40
41
# File 'lib/spreadsheet_rails.rb', line 37

def render_io(writer)
  StringIO.new.tap do |io|
    writer.write(io)
  end.string
end

#spreadsheet_document(workbook = nil, options = {}) ⇒ Object

Render a new or existing spreadsheet workbook

Pass an instance of Spreadsheet::Workbook to render it directly

Valid options:

:filename: sent to client in the Content-Disposition header
:renderer: subclass of Spreadsheet::Workbook to use, defaults to Spreadsheet::Workbook
:io:       optional IO object pass to Spreadsheet::Workbook#initialize

Yields the workbook object unless a spreadsheet instance is given



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/spreadsheet_rails.rb', line 17

def spreadsheet_document(workbook = nil, options = {})
  filename = options.delete(:filename)

  unless workbook
    klass = options.delete(:renderer) || Spreadsheet::Workbook
    klass_args = [options.delete(:io)]
    klass_args << options unless options.empty?
    workbook = klass.new(*klass_args)
    yield workbook if block_given?
  end

  disposition = "attachment;"
  disposition += %Q( filename="#{filename}") if filename
  headers['Content-Disposition'] = disposition

  render_io workbook
end