如何将数据写入excel文件并在asp.net中下载

我已经开发了一个在线商店的应用程序,其中不同的商店在那里保持目录。 但我必须开发一个function,下载目录在xls文件中,我有我的数据在数据表,我必须写在dynamic生成的xls文件并下载它。

为此我尝试休耕:

DataTable ProductDetails = sql.ExecuteSelectCommand("SELECT * FROM Products_Details_View WHERE Supp_Id = " + Session["SuppID"].ToString() + " and Is_Available = 1"); Response.ClearContent(); Response.AddHeader("content-disposition", "attachment;filename=Catalog.xls"); Response.ContentType = "application/excel"; Response.Write(ProductDetails); Response.End(); 

我在这里提到它

但是没有得到任何东西

请帮忙摆脱它。

我使用EPPlus软件包,可以通过Nuget安装。 它允许你直接从你的数据表加载数据到一个Excel工作表上,它包括对工作表格式(字体,列宽等)的支持。 查看他们的文档页面,了解如何在Web应用程序中使用它。

对于你的情况,我会build议像这样的:

 DataTable ProductDetails = sql.ExecuteSelectCommand("SELECT * FROM Products_Details_View WHERE Supp_Id = " + Session["SuppID"].ToString() + " and Is_Available = 1"); using (ExcelPackage pck = new ExcelPackage()) { //Create the worksheet ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo"); //Load the datatable into the sheet, starting from cell A1. //Print the column names on row 1 ws.Cells["A1"].LoadFromDataTable(ProductDetails, true); //Write it back to the client Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment; filename=ProductDetails.xlsx"); Response.BinaryWrite(pck.GetAsByteArray()); } 

尝试这个

  string attachment = "attachment; filename=xxxx" + DateTime.Now + ".xls"; Response.ClearContent(); Response.AddHeader("content-disposition", attachment); Response.ContentType = "application/ms-excel"; StringWriter stw = new StringWriter(); HtmlTextWriter htextw = new HtmlTextWriter(stw); ProductDetails.RenderControl(htextw); GridView dg = new GridView();//Create an empty Gridview to bind to datatable . dg.AutoGenerateColumns = true; dg.DataSource = ProductDetails ; dg.DataBind(); dg.RenderControl(htw); Response.Write(sw.ToString()); stw.Close(); Response.End();