CsvHelperでCSVファイルをダウンロード

 public ActionResult Export()
 {
     var records = new List<object>()
        { 
            new { Id = 123, Name = "abc"},
            new { Id = 456, Name = "xyz"},
        };
 
     // Output the csv file
     using (var memStream = new MemoryStream())
     using (var streamWriter = new StreamWriter(memStream) { AutoFlush = true })
     using (var csvWriter = new CsvWriter(streamWriter)) {
         csvWriter.WriteRecords((IEnumerable) records);
         streamWriter.Flush();
         memStream.Flush();
         memStream.Position = 0;
         var utf8 = Encoding.UTF8;
         var sjis = Encoding.GetEncoding("Shift_JIS");
         Byte[] bytes = Encoding.Convert(utf8, sjis, memStream.ToArray());
         return File(new MemoryStream(bytes, 0, bytes.Length), "text/csv", "test.csv");
     }
 }
 

参考

パブリックに参照できるバッファーを持つ MemoryStream インスタンスを作成するには、

MemoryStream、MemoryStream(Byte[], Int32, Int32, Boolean, Boolean)、または MemoryStream(Int32) を使用します。

現在のストリームのサイズを変更できる場合に、このメソッドを 2 回呼び出しても、メソッド呼び出しの間に基になるバイト配列のサイズが変更されると、同じ配列は返されません。

詳細については、「Capacity」を参照してください。

http://msdn.microsoft.com/ja-jp/library/system.io.memorystream.getbuffer(v=vs.110).aspx


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2014-03-23 (日) 13:24:42