2017-06-02 120 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

相關問題