【发布时间】:2023-03-17 02:42:01
【问题描述】:
我在按钮单击事件中将 gridview 导出到 excel 工作表,但导出的 excel 工作表仅显示以下信息
private void ExportGridView(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel";
using (StringWriter sw = new StringWriter())
{
HtmlTextWriter hw = new HtmlTextWriter(sw);
//To Export all pages
GridView1.AllowPaging = false;
GridView1.DataBind();
GridView1.RenderControl(hw);
//style to format numbers to string
string style = @"<style> .textmode { } </style>";
Response.Write(style);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
}
gridview 的 aspx 中的代码也是
......
<asp:GridView ID="GridView1" runat="server" Font-Size="10pt" AllowSorting="True"
BackColor="White" BorderColor="#CCCCCC" AutoGenerateSelectButton="true"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnRowDataBound="GridView1_RowDataBound" OnSorting="GridView1_Sorting">
<%-- <Columns>
....................
<td> <asp:Button runat="server" ID="btnExport" Text="Export to Excel" onclick="btnExport_Click" /></td>
</tr>
</table>
</asp:Content>
【问题讨论】:
-
你在哪里绑定 GridView ?能分享一下codebehind的完整代码吗? GridView 数据源绑定。
-
尝试注释掉您第一次写入响应流的部分,即
Response.Write(style);我的理论是,由于这是 excel 看到的第一件事而不是表格标签,它不会呈现它作为一张桌子。另外,我应该指出,这确实不是最好的方法。是的,您可以将 gridview 的渲染(一个 html 表格)输出到 Excel,但这实际上并不一致。查看 NPOI 以创建 excel 文档或类似的东西。 -
@priya777 我已经解决了这个问题。原因之一是在导出按钮单击时绑定数据。