問題:什麼是ASP.NET Core1.1中以下代碼的最後三行的替代方法和/或什麼是解決方法?在這些最後三行VS2015
抱怨HttpResponse does not contain a definition for OutputStream, Flush(), End()
即時創建Excel文件並將其下載/保存到客戶端
背景:在我ASP.NET Core 1.1
應用我使用EPPlus.Core將數據導出在飛行到Excel,並把它下載/保存在客戶端。作爲首發,我試圖模仿下面的例子(從here拍攝),但VS2015
是不承認這段代碼的last 3 lines
。
public void ExportListUsingEPPlus()
{
var data = new[]{
new{ Name="Ram", Email="[email protected]", Phone="111-222-3333" },
new{ Name="Shyam", Email="[email protected]", Phone="159-222-1596" },
new{ Name="Mohan", Email="[email protected]", Phone="456-222-4569" },
new{ Name="Sohan", Email="[email protected]", Phone="789-456-3333" },
new{ Name="Karan", Email="[email protected]", Phone="111-222-1234" },
new{ Name="Brij", Email="[email protected]", Phone="111-222-3333" }
};
ExcelPackage excel = new ExcelPackage();
var workSheet = excel.Workbook.Worksheets.Add("Sheet1");
workSheet.Cells[1, 1].LoadFromCollection(data, true);
using (var memoryStream = new MemoryStream())
{
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Headers.Add("content-disposition", "attachment; filename=Contact.xlsx");
excel.SaveAs(memoryStream);
memoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
你只是不斷地問不同的輪換(一旦它是csv,現在是一個excel文件)相同的問題。如果它可以接受'Stream',你總是可以做'新的ExcelPackage(HttpContext.Response.Body)'。只要流的寫作是隻向前它將工作(不收卷,因爲你是在大多數情況下直接寫入線/ TCP連接到用戶的瀏覽器)和(非官方至少)EPPlus包確實有構造(見[這裏]源(https://github.com/VahidN/EPPlus.Core/blob/master/src/EPPlus.Core/ExcelPackage.cs#L328)),你可能需要調用'保存()'方法 – Tseng
或者只是首先在'MemoryStream'中執行'excel.SaveAs(HttpContext.Response.Body)'。爲什麼要浪費內存時,你可以直接寫入響應流......你只是必須明白你的問題以前的解決方案,並在未來的應用它們,而不是要求一個複製和粘貼代碼準備每一次 – Tseng