MVCでデータテーブルをExcelファイルにストリーミングしようとしています。行数が250,000を超えると、OutOfMemory例外が発生します。以下はコードです:
var memStream = new MemoryStream();
var streamWriter = new StreamWriter(memStream);
streamWriter.WriteLine("{0}", "<TABLE>");
foreach (DataRow rw in dt.Rows)
{
streamWriter.WriteLine("{0}", "<TR>");
foreach (DataColumn cl in dt.Columns)
{
streamWriter.WriteLine("{0}", "<TD>");
streamWriter.WriteLine("{0}", rw[cl].ToString());
streamWriter.WriteLine("{0}", "</TD>");
}
streamWriter.WriteLine("{0}", "</TR>");
}
streamWriter.WriteLine("{0}", "</TABLE>");
streamWriter.Flush();
memStream.Seek(0, SeekOrigin.Begin);
return File(memStream, "application/vnd.ms-excel", "Test.xls");
バッファを介してメモリ ストリームに書き込むことで、OutOfMemory の問題が解決すると思います。しかし、私はそうすることができませんでした。メモリストリームへのバッファリングされた書き込みのために上記のコードをどのように変更すればよいですか?
ありがとう