我在內存中使用MemoryStream
API和EPPlus創建excel文件以創建excel文檔。強制下載流 - 強制下載excel文件
我創建一個Excel文件中的代碼基本上是這樣的:
public Stream GetXlsDocument(IQueryable data)
{
const string sheetName = "Sheet1";
var file = new FileInfo("test2.xls");
MemoryStream stream = new MemoryStream();
using (ExcelPackage p = new ExcelPackage(stream))
{
p.Workbook.Worksheets.Add(sheetName);
ExcelWorksheet ws = p.Workbook.Worksheets[1];
ws.Name = sheetName;
ws.Cells.Style.Font.Size = 11;
ws.Cells.Style.Font.Name = "Calibri";
// Headers
ws.SetValue(1, 1, "Some data");
p.SaveAs(stream);
}
stream.Position = 0;
return stream;
}
然後我其他的功能應該服務於這個流作爲下載到用戶。我試圖這樣做:
var file = Documents.GetXlsDocument();
var memoryStream = new MemoryStream();
file.CopyTo(memoryStream);
Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=nfile.xls");
Response.BinaryWrite(memoryStream.ToArray());
Response.End();
這會顯示我一個下載對話框。但是,當我打開我的Excel文件,然後整個Excel文檔充滿垃圾(我猜二進制數據表示爲一個字符串)。
我不知道我做錯了什麼。
任何任何想法如何我可以使excel文件下載格式良好?也許EPPlus已經有這個東西了?
謝謝,這對我來說伎倆! – Vivendi