在Asp.net中只导出Gridview数据到Excel格式C#

在我的页面中,我有两个文本框控件,我从日历扩展程序中selectdate和导出到Excelbutton我将把Gridview数据导出到Excel工作表。 当我selectexcel表格的时候,显示出我输出excel表格的文本框和button。

我已经在导出button中写入了导出代码。 喜欢:-

protected void Export_to_Excel_Click(object sender, EventArgs e) { try { Response.ClearContent(); Response.Buffer = true; Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.xls")); Response.ContentType = "application/ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); Grd_MidData.AllowPaging = false; bindgriddata(); //Change the Header Row back to white color Grd_MidData.HeaderRow.Style.Add("background-color", "#FFFFFF"); //Applying stlye to gridview header cells for (int i = 0; i < Grd_MidData.HeaderRow.Cells.Count; i++) { Grd_MidData.HeaderRow.Cells[i].Style.Add("background-color", "#df5015"); } Grd_MidData.RenderControl(htw); Response.Write(sw.ToString()); Response.Flush(); } catch (Exception ee) { } } 

当我selectexcel工作表时,它会显示gridview数据以及两个文本框和从中进行过滤的button。

所以,任何人都build议我,如何只显示gridview数据,但不显示excel工作表上的文本框&button。

您必须使用下面的代码将数据绑定到您的Excel代码

  bindgriddata(); Response.ClearContent(); Response.Buffer = true; Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Customers.xls")); Response.ContentType = "application/ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter ht = new HtmlTextWriter(sw); Grd_MidData.RenderControl(ht); Response.Write(sw.ToString()); Response.End(); 

它正在为我工​​作。

在这里输入图像说明

在这里,gridview数据与From date:To Date:文本框和button一起显示。 那么我怎样才能从工作表中删除这些字段。

你可以使用close xml来生成excel,它将提供更多的function来创buildexcel和格式。

 protected void Export_to_Excel_Click(object sender, EventArgs e) { bindgriddata(); Grd_MidData.DataSource = objDS; // Dataset Grd_MidData.DataBind(); using (XLWorkbook wb = new XLWorkbook()) { try { //creating worksheet var ws = wb.Worksheets.Add("Report"); //adding columms header int columnscount = objDS.Tables[0].Columns.Count; char a = 'A'; for (int j = 1; j <= columnscount; j++) { string str = a + "1"; ws.Cell(str).Value = objDS.Tables[0].Columns[j - 1].ColumnName.ToString(); ws.Cell(str).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; a++; } ws.Columns().AdjustToContents(); //formatting columns header var rngheaders = ws.Range("A1:J1"); rngheaders.FirstRow().Style .Font.SetBold() .Font.SetFontSize(12) .Font.SetFontColor(XLColor.Black) .Fill.SetBackgroundColor(XLColor.DeepSkyBlue) .Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) .Border.OutsideBorder = XLBorderStyleValues.Thin; ////adding data to excel int k = 2; foreach (DataRow row in objDS.Tables[0].Rows) { char b = 'A'; string str = b + "" + k; for (int i = 0; i < objDS.Tables[0].Columns.Count; i++) { ws.Cell(str).Value = row[i].ToString(); ws.Cell(str).Style.Border.OutsideBorder = XLBorderStyleValues.Thin; ws.Cell(str).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left); b++; str = b + "" + k; } k++; } Response.Clear(); Response.Buffer = true; Response.Charset = ""; Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment;filename=Customer.xlsx"); } catch { } using (MemoryStream MyMemoryStream = new MemoryStream()) { wb.SaveAs(MyMemoryStream); MyMemoryStream.WriteTo(Response.OutputStream); Response.Flush(); Response.End(); } } } 

导出GridView时,我遇到了同样的问题。 我添加了一个try / catch并将消息导出到Excel,然后意识到它正在生成一个错误。 我解决了它,感谢以下答案: 即使GridView是在一个窗体标签之后,GridView必须被放置在具有runat =“server”的窗体标签内