[Ruby on Rails] CSVインポート/エクスポート
- 2013 1/24
- カテゴリー : Ruby on Rails
- コメントを書く
Ruby on Rails で、CSVのインポート/エクスポート機能を実装する上での参考情報をご紹介します。
Ruby 1.9 は FasterCSV が標準の CSV クラスとして採用されているので、require “csv” すればすぐに使える。
CSVインポート/エクスポート実装サンプル
RailsCast
・Ruby on Rails Screencasts – RailsCasts
CSVインポート
・#396 Importing CSV and Excel – RailsCasts
roo というスプレッドシート(Open Office, Excel, Google Spreadsheetsなど)を操作する gem を使っている。
・roo:スプレッドシートを操るRubyライブラリ « TORQUES LABS
CSVエクスポート
・#362 Exporting CSV and Excel – RailsCasts
・Ruby1.9とRailsでCSV出力(SJIS) #Rails #Ruby – Qiita
・[rails] csvつくって出力するのよメモ | おれせか
CSVの文字コード変換
CSVファイルはExcelから作成されることが多くて、文字コードをShift_JISからUTF-8へ変換して扱う必要があります。
その辺のノウハウがまとめられています。
・CSV を文字コード変換しつつロード #Ruby – Qiita
rails c で CSV ファイルをアップロードする
普通はテストで使う fixture_file_upload メソッドで CSV ファイルをアップロードしてから、モデルに追加したクラスメソッド import を呼び出してやります。
> include ActionDispatch::TestProcess > file = fixture_file_upload "tmp/test.csv", "text/comma-separated-values" => #<Rack::Test::UploadedFile:0x007fa36b03f960 @content_type="text/comma-separated-values", @original_filename="test.csv", @tempfile=#<File:/var/folders/46/bg9j7wkn5qg9n895016mlvk00000gn/T/test.csv20130124-12060-h3mn08>> > Product.import(file) (0.2ms) BEGIN ["a", "b", "c", "d"] ["1", "2", "3", "4"] (0.1ms) COMMIT => <#CSV io_type:File io_path:"/var/folders/46/bg9j7wkn5qg9n895016mlvk00000gn/T/test.csv20130124-12060-h3mn08" encoding:UTF-8 lineno:2 col_sep:"," row_sep:"\r" quote_char:"\""> |