簡體   English   中英

如何將已下載的Excel文件數據從數據表保存到ASP.NET中的應用程序文件夾中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM