404 2010-01-25 17:38
浏览 266
已采纳

rails把数据导出到excle 可供下载

将数据导出到excle,不过,没接触过不知道如何下手!
我的想法,肯定又是ruby操作了。
麻烦大家给个思路,介绍详细点,这方面一点接触没有过!看了别人写的,大多数类库或者方法都没接触过,所以吃力!并不理解

要实现:
1.在后台一个管理按钮“导出报表”(因为我来搞后台管理,有图)
2.到对应的action后要生成excel文件,之后供下载呀!
主要是这个action怎么写啊 :cry:
成功后一定追加分。在此先谢谢了
我的开发环境是xp

  • 写回答

3条回答 默认 最新

  • horace_lee 2010-01-26 09:23
    关注

    首先,点击view页面,会调用一个对应controller的action 比如 store_excel,

    这个action应该需要一个参数,比如excle_data,格式应该是hash或者array。
    

    然后,在controller的store_excel里就可以把excel_data迭代写到excel文件里了。

    大概结构如下:

    [code="ruby"]view:

    <%= button_to "Store excel", :action=> 'store_excel',:excle_data=>@data %>

    controller:

    def store_excel
    if params.key?('excle_data')

     end
    

    end[/code]

    剩下的就是,你想要选什么方法生成和写excel了。
    例如:
    3. 生成excel文件
    如果,你想生成一个excel文件,那么首先,就像写文件一个先加载spreadsheet类库,然后,指定编码接着,就可以创建一个Workbook了
    [code="ruby"] book = Spreadsheet::Workbook.new[/code]
    在workbook基础上创建Worksheet表单
    [code="ruby"]sheet1 = book.create_worksheet[/code]
    当然,你也可以用如下方式创建表单:
    [code="ruby"]sheet2 = book.create_worksheet :name => 'My Second Worksheet'
    sheet1.name = 'My First Worksheet'[/code]
    那么,这时我们可以采用如下方式加载数据到表单Worksheet#[]=,
    Worksheet#update_row, 或者直接给一个指定单元格复制
    [code="ruby"]sheet1.row(0).concat %w{Name Country Acknowlegement}
    sheet1[1,0] = 'Japan'
    row = sheet1.row(1)
    row.push 'Creator of Ruby'
    row.unshift 'Yukihiro Matsumoto'
    sheet1.row(2).replace [ 'Daniel J. Berger', 'U.S.A.',
    'Author of original code for Spreadsheet::Excel' ]
    sheet1.row(3).push 'Charles Lowe', 'Author of the ruby-ole Library'
    sheet1.row(3).insert 1, 'Unknown'
    sheet1.update_row 4, 'Hannes Wyss', 'Switzerland', 'Author'[/code]
    对于格式的处理,可以如下:
    [code="ruby"] sheet1.row(0).height = 18
    format = Spreadsheet::Format.new :color => :blue,
    :weight => :bold,
    :size => 18
    sheet1.row(0).default_format = format
    bold = Spreadsheet::Format.new :weight => :bold
    4.times do |x| sheet1.row(x + 1).set_format(0, bold) end[/code]
    最后,保存excel文件
    [code="ruby"] book.write '/path/to/output/excel-file.xls'[/code]

    具体有关ruby操作excel你也可以参考[url=http://hlee.iteye.com/admin/blogs/search?query=excel]如下[/url]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作