【发布时间】:2015-04-24 12:10:08
【问题描述】:
我编写了一个代码来将 gridview 提取到 Excel。除了gridview中的一行外,一切正常。当我将 gridview 导出到 excel 时,最后一行不包含在 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();
如何解决这个问题?
【问题讨论】:
-
也许你获取了一定数量的行并且因为有一个标题最后一行被遗漏了......也许我们需要查看更多代码
-
我是存在 gridview 的面板。我没有获取特定数量的行。上面我发布了导出到 Excel 代码。
-
@bogojane:您是否从某个地方复制了代码,如果是,也发布该链接。或者让我们知道为什么使用
cell.ColumnSpan = 9;是为了添加一些 CSS 或其他东西。请说明 -
我刚刚创建了一个包含 9 列 colspan 的新标题。
-
您没有创建 Excel 文件。您正在创建一个伪装成 Excel 文件的 HTML 文件。