Sha256: 002162eec35bf284d88efa22492d9e7d2b47c2f869065a9cc38a91db10a0ea4d

Contents?: true

Size: 958 Bytes

Versions: 1

Compression:

Stored size: 958 Bytes

Contents

unless defined? Mime::XLSX
  Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
end

ActionController::Renderers.add :xlsx do |scope, options|
  columns  = options.fetch(:columns, nil)

  xdata = options[:data] || {}
  unless (xdata.has_key?(:text) ||
          xdata.has_key?(:url ) ||
          xdata.has_key?(:file)  )

    xdata[:text] = CloudXLS::CSVWriter.text(scope, {:columns => columns})
  end

  xopts = {:data => xdata}
  xopts[:sheet] = options[:sheet] if options[:sheet]
  xopts[:doc]   = options[:doc] || {}
  xopts[:doc][:format] = 'xlsx'

  response = CloudXLS.xpipe(xopts)
  redirect_to response.url
end

# For respond_to default
class ActionController::Responder
  def to_xlsx
    if options[:stream] == true
      options[:data] ||= {}
      options[:data][:url] ||= controller.request.url.gsub(/xlsx\Z/, "csv")
    end
    controller.render({:xlsx => resources.last }.merge(options))
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cloudxls-rails-0.4.1 lib/cloudxls-rails/handlers/xlsx.rb