Asp.net mvc 从MVC视图导出到CSV(对于Excel)
这是一个奇怪的问题,我所有的东西都在工作,但是在文件中出现的fileStreamResult下面的控制器代码中,100个结果中只有84个。变量searchResults包含100条记录 如果我在运行时单步执行控制器代码,循环中的“sw.WriteLine(……”行将按预期执行100次 因此,似乎正在截断发送到文件流的数据 调试后,我不知道为什么会发生这种情况,因为所有100条记录都不包含空值或任何带有元字符或类似字符的奇怪数据。以前有人见过这种奇怪的行为,或者对此有什么想法吗 我的控制器代码:Asp.net mvc 从MVC视图导出到CSV(对于Excel),asp.net-mvc,Asp.net Mvc,这是一个奇怪的问题,我所有的东西都在工作,但是在文件中出现的fileStreamResult下面的控制器代码中,100个结果中只有84个。变量searchResults包含100条记录 如果我在运行时单步执行控制器代码,循环中的“sw.WriteLine(……”行将按预期执行100次 因此,似乎正在截断发送到文件流的数据 调试后,我不知道为什么会发生这种情况,因为所有100条记录都不包含空值或任何带有元字符或类似字符的奇怪数据。以前有人见过这种奇怪的行为,或者对此有什么想法吗 我的控制器代码:
public FileStreamResult Export(string searchText, string searchTextSite, string StartDate, string EndDate)
{
var searchResults = getSearchResults(searchText, searchTextSite, StartDate, EndDate);
HttpContext.Response.AddHeader("content-disposition", "attachment; filename=Export.csv");
var sw = new StreamWriter(new MemoryStream());
sw.WriteLine("\"Ref\",\"Source\",\"Collected\"");
foreach (var line in searchResults.ToList())
{
sw.WriteLine(string.Format("\"{0}\",\"{1}\",\"{2}\"",
line.WasteId,
line.SourceWasteTypeId.ToDescription(),
line.CollectedDate.ToShortDateString()));
}
sw.BaseStream.Seek(0, SeekOrigin.Begin);
return new FileStreamResult(sw.BaseStream, "text/csv");
}
在返回结果之前是否需要刷新流?在搜索之前尝试
sw.Flush();
在返回结果之前是否需要刷新流?在搜索之前尝试sw.Flush();