* CsvHelperでCSVファイルをダウンロード [#xef29890]
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;
return File(new MemoryStream(memStream.GetBuffer(),
0, memStream.ToArray().Length), "text/csv", "test.csv");
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");
}
}
** 参考 [#k6ff25a6]
> パブリックに参照できるバッファーを持つ 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