rails6 EXCEL最終行まで読み込む

rails6 EXCEL最終行まで読み込む

rails6でEXCEL最終行まで読み込むまでの手順を記述してます。Railsのバージョンは6.1.3を使用してます。

環境

  • OS CentOS Linux release 7.9.2009 (Core)
  • Ruby 3.0.0
  • Rails 6.1.3

rooインストール

ここでは、excelファイルを読み込むために、「roo」を使用してます。

インストールは、まずGemfileに以下を追加します。

インストールします。

最終行まで読み込む

ライブラリ「roo」を使用して、最終行まで読み込む場合は「sheet」を指定してから「last_row」で取得することができます。

これで最終行まで読み込むことが可能です。

最終列は、以下で取得可能です。

サンプル

実際に、シートを指定してEXCELを読み込んでみます。
読み込むEXCELファイルは「Book1.xlsx」という名称で、データは下図となります。

「ExcelImportController」というController内でシートを指定します。
※ここでは「foo」シートのデータの最終行まで取得します。

view側のファイル名は「test.html.erb」として、
以下のように「.each_row_streaming(offset: 0, max_rows: @sheet.last_row)」で最終行まで繰り返しを行います。
※デザインにはbootstrapを使用してます。

「routes.rb」には、以下を追加してます。

これで。「rails s」で起動して、ブラウザから http://プライベートIP or サーバーアドレス:3000/exceltest にアクセスすると指定されたシートのデータが表示されていることが確認できます。