Gridview没有得到Excel文件中的最后一行

我写了一个代码来获取gridview的Excel。 一切工作正常,除了gridview中的一行。 当我将excel导出gridview时,最后一行不包含在excel文件中。 当我扫描我的整个代码,然后我发现一个代码是造成一个问题。 这里是代码:

protected void OnDataBound(object sender, EventArgs e) { GridViewRow row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal); TableHeaderCell cell = new TableHeaderCell(); cell.Text = "A"; cell.ColumnSpan = 9; row.Controls.Add(cell); gv.HeaderRow.Parent.Controls.AddAt(0, row); } 

此代码用于将新的标题添加到合并的单元格的网格视图。 删除这段代码后,一切正常。 但是我需要这个代码。

导出为Excel代码:

 Response.Clear(); Response.AddHeader("content-disposition", "attachment;filename=Rept" + DateTime.Now.ToString("yyyy_MM_ddThh_mm_ss_") + ".xls"); Response.Charset = ""; Response.ContentType = "application/vnd.xls"; System.IO.StringWriter stringWrite = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite); System.Web.UI.HtmlControls.HtmlForm form = new System.Web.UI.HtmlControls.HtmlForm(); Controls.Add(form); form.Controls.Add(gvpanel); form.RenderControl(htmlWrite); Response.Write(stringWrite.ToString()); Response.End(); 

如何解决这个问题?

我还没有find解决scheme,这使我提供这个解决scheme。 当你创build一个标题行,你也需要导出到Excel,下面的代码解决了错过最后一行。

使用RowCreated Event创builddynamic标题行。

  protected void Grid_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { GridViewRow HeaderRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); TableCell HeaderCell1 = new TableCell(); HeaderCell1.Text = "Solved your Issue"; HeaderCell1.ColumnSpan = 10; HeaderRow.Cells.Add(HeaderCell1); Grid.Controls[0].Controls.Add(HeaderRow); } } 

现在你可以调用你的ExportToExcel方法:

  private void ExportToExcel(GridView gv, string exportfilename) { string filename = exportfilename + ".xls"; System.IO.StringWriter tw = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); gv.RenderControl(hw); //Write the HTML back to the browser. Response.ContentType = "application/vnd.ms-excel"; Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ""); this.EnableViewState = false; Response.Write(tw.ToString()); Response.Flush(); Response.End(); } 

您可以使用Excel电子表格作为数据源到您的GridView并连接到任何其他数据库:

如何使用ASP.NET,ADO.NET和Visual Basic .NET查询和显示Excel数据