0

在控制器的索引操作中,我得到了这个:

def index
    @vehicles = Vehicle.all
    respond_to do |format|
    format.html
    format.xls
    end
end

I have got this in my index.xls.erb template:
 <table>
      <tr>
        <th>Manufacturer</th>
        <th>Model</th>
        <th>Version</th>
        <th>CC</th>
        <th>BHP</th>
      </tr>
    <% @vehicles.each do |vehicle| %>
      <tr>
        <td><%= vehicle.manufacturer.name %></td>
        <td><%= vehicle.model %></td>
        <td><%= vehicle.version %></td>
        <td><%= vehicle.engine_cc %></td>
        <td><%= vehicle.power_bhp %></td>
       <% end %>
  </table>

 and I have registered the mime_type for xls like this:
 Mime::Type.register 'application/vnd.ms-excel', :xls

但这没有 MS Excel 显示的通常的单元格边框。尝试了 Railscasts 中的建议,即http://railscasts.com/episodes/362-exporting-csv-and-excel。但这会在尝试打开文件时导致基本的输入/输出错误(在这种情况下可能是文件格式错误)。任何帮助表示赞赏

4

1 回答 1

1

如果您希望从 rails 创建有效的 excel 数据,请查看 axlsx。本着全面披露的精神,我是 gem 的作者,但它确实是制作 excel (xlsx) 文档的最佳选择。

您可以在此处找到有关 gem 的更多信息: https ://github.com/randym/axlsx

这里有在 Rails 中使用它的教程:http: //axlsx.blog.randym.net/

还有一些辅助 gem,例如acts_as_xlsx 和 axlsx_rails,它们使模型导出和报告生成变得非常容易。

如果您有任何问题,您通常也可以在

自由节点上的 axlsx。

使用 axlsx,您可以执行以下操作:

require 'axlsx'
p = Axlsx::Package.new
p.workbook.add_worksheet(:name => 'vehicles') do |sheet|
  sheet.add_row %w(Manufacturer Model Version CC BHP), :style => Axlsx::STYLE_THIN_BORDER
  @vehicles.each do |vehicle|
    data = [vehicle.manufacturer.name, vehicle.model, 
            vehicle.version, vehicle.engine_cc,
            vehicle.power_bhp]
    sheet.add_row data, :style => Axlsx::STYLE_THIN_BORDER
  end
end
p.serialize('vehicles.xlsx')

您还可以做更多的事情,例如自定义样式、图表、超链接、图像等。如果您认为它适合您的开发风格,请试一试。

于 2012-12-20T10:14:39.813 回答