使用EPPlus,我试图将gridview导出到Excel工作表

Excel告诉我有无法读取的数据,所以在我说尝试恢复信息后,它会显示正确的数据。 但是,当我打开xlsx的文本文件时,我得到整个页面的所有html,而不仅仅是gridview(这可能是Excel正在讨论的不可读的内容)。

这是我的代码:

public void ExcelDownload(object sender, EventArgs e) { DataSet _MailingListUsers = db.GetMailingList(); DataTable mailTable = _MailingListUsers.Tables[0]; DumpExcel(mailTable); } private void DumpExcel(DataTable tbl) { using (ExcelPackage pck = new ExcelPackage()) { //Create the worksheet ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Mailing List"); //Load the datatable into the sheet, starting from cell A1. Print the column names on row 1 ws.Cells["A2"].LoadFromDataTable(tbl, false); //Header Titles ws.Cells["A1"].Value = "Employee Name"; ws.Cells["B1"].Value = "Email Address"; ws.Cells["C1"].Value = "Phone"; ws.Cells["D1"].Value = "Business Unit"; ws.Cells["E1"].Value = "Site"; ws.Cells["A1"].AutoFitColumns(); //Format the header for column 1-3 using (ExcelRange rng = ws.Cells["A1:E1"]) { rng.Style.Font.Bold = true; //Set Pattern for the background to Solid rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set color to dark blue rng.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromArgb(79, 129, 189)); rng.Style.Font.Color.SetColor(System.Drawing.Color.White); } //Write it back to the client Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment; filename=MailingList.xlsx"); Response.BinaryWrite(pck.GetAsByteArray()); } } 

关于可能发生的事情的任何想法? 在尝试将HTML数据发送到Excel时遇到同样的问题后,有人建议使用EPPlus,它发送整个页面,而不仅仅是gridView。

谢谢

我错过了Response.Clear()Response.End()

 try { var pck = new OfficeOpenXml.ExcelPackage(); var ws = pck.Workbook.Worksheets.Add("Mailing List"); ws.Cells["A2"].LoadFromDataTable(tbl, false); Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment; filename=MailingList.xlsx"); Response.BinaryWrite(pck.GetAsByteArray()); } catch (Exception ex) { //log error } Response.End();