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 をご覧ください。完全な開示の精神で、私は宝石の作成者ですが、Excel (xlsx) ドキュメントを作成するための最高のものです。

gem の詳細については、 https ://github.com/randym/axlsx をご覧ください。

また、レールで使用するためのチュートリアルがここにあります: http://axlsx.blog.randym.net/

モデルのエクスポートとレポートの生成を非常に簡単にする act_as_xlsx や axlsx_rails などの二次的な gem もあります。

ご不明な点がございましたら、通常、私 (JST) を見つけることもできます。

freenode 上の 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 に答える