2013年12月18日

ASP.NET MVCでリフレクションを使って任意のオブジェクトの一覧をCSV形式で返す

ASP.NET MVCで任意のオブジェクトのIEnumerableを受け取ってCSVファイルを出力するクラスを作ったので、久しぶりにGitHubに上げておこうと思う。

https://github.com/mikehibm/CSVResult


何も大した事はしていないけれど、リフレクションを使った例として今度の勉強会で使おうかと思っている。
上の様なデータが


この様にCSV形式でダウンロードされる。上はExcel 2010で開いた所。

CSV形式と言うと、データの中に引用符(ダブルクォート)やカンマが含まれていた場合の処理が面倒だ。

今回は
  • ダブルクォートは二重化する。("→"")
  • カンマは全角に変換する。
  • 改行コードは「|」に変換する。
というとりあえずのルールで実装してみた。

検索して調べた限りではカンマが含まれる場合は項目全体をダブルクォートで囲めば良いと書いてあるケースが多かったけれども、それだとExcel 2010でどうしても列がずれてしまうので、苦肉の策として全角にしてしまった。^^;

改行コードについても同じく、ダブルクォートで囲むだけではExcel 2010では上手く行かないみたいなので適当に「|」に変換する事にした。まあ実際に使う際には適宜仕様に合わせて変更すればいいかなと思う。