[英]How to save downloaded Excel file data from Data table into application folder in ASP.NET
我想將文件下載到保存應用程序文件夾中,我從數據表中將文件下載為Excel工作表。 我沒有下載文件的路徑,而是直接從數據表下載,我想將其保存在應用程序文件夾中。 我怎樣才能做到這一點?
我的代碼:
public void ExportToExcel(DataSet ds)
{
using (XLWorkbook wb = new XLWorkbook())
{
foreach (DataTable dt in ds.Tables)
{
//Add DataTable as Worksheet.
wb.Worksheets.Add(dt);
}
//Export the Excel file.
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=Report.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.TransmitFile(Server.MapPath("~/Files/Report.xlsx"));// I added this but it shows error
Response.Flush();
Response.End();
}
}
}
花了一段時間才能弄清事物的順序,但刪除對TransmitFile()
的調用應該可以工作。 您已經通過MemoryStream
寫入了文件。
public void ExportToExcel(DataSet ds)
{
using (XLWorkbook wb = new XLWorkbook())
{
foreach (DataTable dt in ds.Tables)
{
//Add DataTable as Worksheet.
wb.Worksheets.Add(dt);
}
//Export the Excel file.
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=Report.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
如果這是標准的MVC控制器操作,則您的響應會容易得多,並且會更改為;
public FileStreamResult ExportToExcel(DataSet ds)
{
using (XLWorkbook wb = new XLWorkbook())
{
foreach (DataTable dt in ds.Tables)
{
//Add DataTable as Worksheet.
wb.Worksheets.Add(dt);
}
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
return FileStreamResult(MyMemoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.