2017-06-02 122 views
0

在我的ASP.NET 1.1的核心应用程序,我使用EPPLus.Core将数据导出到Excel中。但在文件下载的时候,我得到的错误:Failed- network errorEPPLus - 导出到Excel回报失败的网络错误

控制器

public async Task<FileStreamResult> CPT_RC_Excel(int FiscalYear) 
{ 
    var custlist = _Context.Customers.Where(c => c.Region=="NW").ToList(); 

    MemoryStream ms = new MemoryStream(); 
    using (ExcelPackage pck = new ExcelPackage(ms)) 
    { 
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Clients"); 
    ws.Cells["A1"].LoadFromCollection(custlist); 

    Response.Clear(); 
    Response.Headers.Add("content-disposition", "attachment; filename=TestFile.xlsx"); 
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
    var bytes = pck.GetAsByteArray(); 
    await Response.Body.WriteAsync(bytes, 0, bytes.Length); 
    return File(ms, "application/force-download", "TestFile.xlsx"); 
    } 
} 

UPDATE:两个Google Chrome and IE 11发生

  1. 错误。整个应用程序在本地桌面上。这里没有涉及网络驱动器。
  2. 错误似乎自另一个动作方法(代码所示here)在同一个控制器被上述相关的代码做向下负载的CSV /文本文件成功。
+0

检查这个话题:https://stackoverflow.com/questions/39617706/failed-network-error-when-downloading-excel-文件提出按epplus-DLL – sQanns

+0

@sQanns我已经检查了第一位。但'VS2015'不能识别在那里接受的答案中提到的以下命令:'Response.ClearHeaders(); Response.ClearContent(); Response.BinaryWrite(BIN); Response.Flush();到Response.End();' – nam

回答

0

你可以尝试这样的事:

public async Task<ActionResult> CPT_RC_Excel(int FiscalYear) 
     { 

      var fileContentAsByteArray = [generate your file as a byte array] 

      return File(fileContentAsByteArray, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "TestFile.xlsx"); 

     } 

如果不工作,那么这个问题是与文件的生成。

尝试删除参考的MemoryStream和使用......

... 
using (var excelPackage = new ExcelPackage()) 
{ 
... 
} 
+0

我想你的建议的解决方案,但仍完全相同的错误。 – nam

+0

我认为你的建议是有道理的。但可能我没有按照你的预期正确地跟踪它。您能否将我的代码复制/粘贴到您的回复中,并将其修改为您的建议?谢谢。 – nam

+0

你是在暗示删除'MemoryStream','Response'对象等,并代之以您使用'{...}'和'VAR fileContentAsByteArray = excelPackage.GetAsByteArray()块;'和'返回文件(fileContentAsByteArray,.. ........)'? – nam

相关问题