ruby on rails 中使用CSV导出excel文件

2 篇文章 0 订阅
1 篇文章 0 订阅

Exporting CSV and Excel

config/application.rb

require 'csv'

index.html.erb

<p>
    Download:
    <%= link_to 'CSV',  products_path(format: "csv") %>
    <%= Link_to 'Excel', products_path(format: "xls") %>
</p>

products_controller.rb

def index
    @products = Product.all #可以使用select等进行筛选
    respond_to do |format|
        format.html
        format.csv { send_data @products.to_csv }
        format.csv { send_data @products.to_xls }
    end
end

modle/product.rb

def self.to_csv(options = {})
    CSV.generate(options) do |csv|
        csv << column_names #column_names是由数据库表的所有列名组成的数组,可自定义数组代替,以便查询导出数据
        all.each do |product|
            csv << product.attributes.values_at(*column_names)
        end
    end
end

config/initializers/mime_type.rb

Mime::Type.register "application/xls", xls

views/products/index.xls.erb

<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns:x="urn:schemas-microsoft-com:office:excel"
  xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:html="http://www.w3.org/TR/REC-html40">
  <Worksheet ss:Name="Sheet1">
    <Table>
      <Row>
        <Cell><Data ss:Type="String">ID</Data></Cell>
        <Cell><Data ss:Type="String">Name</Data></Cell>
        <Cell><Data ss:Type="String">Release Date</Data></Cell>
        <Cell><Data ss:Type="String">Price</Data></Cell>
      </Row>
    <% @products.each do |product| %>
      <Row>
        <Cell><Data ss:Type="Number"><%= product.id %></Data></Cell>
        <Cell><Data ss:Type="String"><%= product.name %></Data></Cell>
        <Cell><Data ss:Type="String"><%= product.released_on %></Data></Cell>
        <Cell><Data ss:Type="Number"><%= product.price %></Data></Cell>
      </Row>
    <% end %>
    </Table>
  </Worksheet>
</Workbook>

原文地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值