如何将数据从rails api导出到xls?

时间:2017-07-27 09:46:03

标签: ruby-on-rails excel api xls

我有一个用rails构建的json api。 这是网址:https://kazatomprom-backend.herokuapp.com/organizations/suzak/blocks/1/notes

我想将数据导出到xls。但是这些数据必须根据模型属性进行定制。

id| volume_value|user
 1|        887  |zhanabek@gmail.com
 2|        897  |john@gmail.com

我找到了一些解决方案,但它需要视图,但我不需要视图,因为这是api。那么,如何仅使用api?

导出数据

2 个答案:

答案 0 :(得分:0)

这样的东西会起作用(它使用csv数据写入xls文件):

CSV.open('foo.xls', "wb") do |csv|
  csv << ['id','volume_value','user']
  JSON.parse(json).each do |hash|
    csv << [hash['id'],hash['volume_value'],hash['user']['email']]
  end
end

答案 1 :(得分:0)

您可能希望看到

的宝石acts_as_xlsx

https://github.com/randym/acts_as_xlsx

它允许您在.to_xlsx结果上调用ActiveRecord方法

Posts.where(created_at > Time.now-30.days).to_xlsx

如何使用

将gem添加到Gemfile并捆绑安装    gem&#39; acts_as_xlsx&#39;

# 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!