C# NPOI导出Excel System.OutOfMemoryException 异常

publicstaticMemoryStreamExport(DataTabledtSource,stringstrHeaderText,stringstrFileNam... public static MemoryStream Export(DataTable dtSource, string strHeaderText, string strFileName)
{
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet1 = workbook.CreateSheet("sheet1");

//填充表头
IRow dataRow = sheet1.CreateRow(0);
foreach (DataColumn column in dtSource.Columns)
{
dataRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
}

//填充内容
for (int i = 0; i < dtSource.Rows.Count; i++)
{
dataRow = sheet1.CreateRow(i + 1);
for (int j = 0; j < dtSource.Columns.Count; j++)
{
dataRow.CreateCell(j).SetCellValue(dtSource.Rows[i][j].ToString());
}
}

MemoryStream ms = null;

//保存
using (ms = new MemoryStream())
{
workbook.Write(ms);
}
workbook = null;

return ms;
}
调用:
void Download(string xx, DataTable dt)
{
MemoryStream ms = NPOIHelper.Export(dt, xx, xx);
if (ms != null)
{
Response.AddHeader("Content-Disposition", string.Format("attachment; filename=" + xx + ".xls"));
Response.BinaryWrite(ms.ToArray());
ms.Close();
ms.Dispose();
}
}

出错:

“/”应用程序中的服务器错误。

引发类型为“System.OutOfMemoryException”的异常。
展开
 我来答
阳光的雷咩咩
2016-10-12 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7827万
展开全部
using (ms = new MemoryStream()) //这里至少要设置文件名啊
追问
定义空对象也行的,目前程序运行是正常的,不过下载数据量大的时候,Excel达到30M+的时候就会报错.
追答
考虑数据库?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式