[Java]seasar2のフレームワークで「S2CSV」というライブラリがあります。使ってみたところ、すごく便利でした。Javaに限らず普通にプログラムでCSVファイルを操作する際は、Fileクラス使ってストリーム取得して、カンマの位置や行数判定など面倒な処理をコーディングしないといけません。正直なところCSVファイルのインポート・エクスポートの要件のある業務システムの開発は嫌いだったりします。CSVの書式だのヘッダ行だのエラー処理に追われて無駄な工数をかけてしまうからですね。「S2CSV」はCSV操作に特化したものなので、そういった無駄を解決してくれます。覚え書き程度に書いておこうと思います。seasar2のS2CSVってどんなライブラリ?CSVファイルを操作・制御するためのJavaライブラリです。サーブレットでCSVのアップロードやダウンロード処理を実装する際に活躍します。CSVファイルの入出力処理はもちろんのこと、データベースに直接CSVデータを登録・更新・削除ができます。頻繁にCSVファイルを利用する業務システムには欠かせないでしょう。開発の要件としてあったのが、クライアント側からアップロードしたCSVをサーバ側で処理して、そのままCSVデータをエンティティーを通してデータベースに登録してしまう処理。すべてS2CSV導入で簡単に解決できました。「ダウンロード」ページの「s2csv-0.0.2-sp1.zip」をダウンロードし解凍。中身の「s2csv-0.0.2-sp1.jar」をC:¥resin-pro¥webapps¥{APP}¥WEB-INF¥libに配置。eclipseの「プロジェクトエクスプローラー」でS2CSVを利用したいプロジェクトを右クリックし「プロパティ」。「Javaのビルド・パス」の「ライブラリー」タブを開く。「ライブラリーの追加」ボタンをクリックし「ユーザー・ライブラリー」を選択。「ユーザー・ライブラリー」ボタンをクリックし「新規」ボタンクリック。「ユーザー・ライブラリー」名を「S2CSV」と指定する。アイコンが一覧に追加されたら「JARの追加」で3.のJARファイルを選択。「ライブラリーの追加」ウィンドウで「S2CSV」を追加する。「OK」ボタンをクリックするとプロジェクト内で「S2CSVライブラリ」が使用できるようになります。diconファイルの記述C:¥resin-pro¥webapps¥{^APP}¥WEB-INF¥classesを開く。「app.dicon」に以下を追記。path="s2csv.dicon"/>「creator.dicon」に以下を追記。CsvCretorクラスをDIさせることにより、{固有名}Csvクラスが自動でコンポーネント登録されます。「customizer.dicon」に以下を追記。class="org.seasar.framework.container.customizer.CustomizerChain"/>CSVバリデータ用メッセージプロパティCSVのバリデーション機能を使用する為に専用のメッセージプロパティファイルを用意します。準備していないと「CSVValidateResult」クラスのエラーメッセージ取得時に例外が発生します。ResourceNotFoundRuntimeException[ESSR0055]リソース(csv_application)が見つかりませんこの例外を出さない為にも「メッセージプロパティ」ファイルを正しく配置しておきます。「ダウンロード」ページの「s2csv-tutorial.zip」をダウンロードし解凍。中身の「target¥classes¥csv_application_ja.properties」をeBuilderの「src/main/resources」にコピーする。以上で基本的なS2CSVライブラリのセットアップ作業は完了です。eclipseのエディタでS2CSV関連のクラスモジュールの呼び出しができますよ。S2CSVの導入にあたって苦労した点s2csvのjarファイルの配置場所を間違えた基本的に外部ライブラリをウェブサーバにセットする場合は、サーバディレクトリ内の「lib」フォルダに格納してあげるだけですが、s2csvのjarを入れてもサーバエラーになってしまいしました。みたら格納先の「lib」フォルダが間違っていました。正しくはアプリケーションディレクトリ側の「lib」フォルダでした。(WEB-INF配下)普通にseasar2のマニュアルにも明記されていることに後になって気づきました。CSVクラスのコンポーネントの呼び出しに失敗しましたeclipseでs2csvの機能を利用して、CSV読み込みをしようとしたら、なぜかコンポーネントエラーでCSVのデータがパースできませんでした。結論から言うと、パースしようとしたクラス名の名称の末尾が「CSV」になっていました。そりゃ動かないですよ。S2CSVの仕様でcreator.diconに記述したCsvCreatorクラスは、{^固有名}Csv.classという名称のクラスしか自動コンポーネントされません。私の場合、例えばSampleCsv.javaと指定しないといけないのに、SampleCSV.javaというクラス名で定義していました。確かに「org.seasar.s2csv.creater.CsvCreator」の内部のソースを見ると、prefix(“Csv”)とあり、コンポーネント自動登録の予約語として記述されています。remarks;}クラス名のサフィックスは必ず「Csv」にします。クラスに対して「CSVEntityアノテーション」を実装し、CSVファイルにヘッダ行を含めるか指定します。フィールド変数値にはCSV入出力時に使用する属性値を必要に応じて定義します。CSVColumnアノテーションの「columnIndex」はCSVファイルの列位置を表す属性なので記述必須です。S2CSVでCSVの入出力とバリデートCSVファイルをパースして中身のデータを取得ブラウザ上からCSVファイルをPOSTしてサーバ上にアップロードする処理は割愛します。サーバ側にCSVファイルが配置されている前提のサンプルコードです。サーバにアップロードする処理が必要ですが割愛。サーバにアップロードする処理が必要ですが割愛。DBからデータを取得し格納されていることを前提とします。クラス変数が同じであればCsvクラスにコピーするだけなのでなんでもOK。DBからデータを取得し格納されていることを前提とします。クラス変数が同じであればCsvクラスにコピーするだけなのでなんでもOK。最新の記事よっきパソコンが大好きな青年。職業はプログラマ/SE。フリーランスとしてウェブサイトの構築・保守の業務に従事。専門学校とパソコンスクールで講師も担当。幼少期からパソコンが大好きで、趣味がそのまま仕事に転じた。自作PCの魅力に惹かれたのは学生時代の頃。自作PC専門ブログで、お得な情報を紹介しています。最終更新日:2018年12月17日コメントを残す返信をキャンセルする。published)サイト上に表示された文字を入力してください。業:IT系の講師/フリーランスJavaやPHPなどを中心にWEB系エンジニアとして活動しています。自作PCの魅力にハマり、何台も組み立て経験は豊富。自作PCアドバイザー的なこともやってるので、気軽にご相談下さい!!趣味でホームページ制作をしています。お仕事の依頼をしてみませんか?WordPressテーマ・プラグイン開発、自作PC組立代行などお仕事の依頼はこちらでお願いします。Reserved.このページの先頭へ。