【问题标题】:Exporting gridview to excel giving empty excel sheet将gridview导出到excel给出空的excel表
【发布时间】:2023-03-17 02:42:01
【问题描述】:

我在按钮单击事件中将 gridview 导出到 excel 工作表,但导出的 excel 工作表仅显示以下信息


而不是gridview数据。下面如果导出按钮里面的代码点击

    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 我已经解决了这个问题。原因之一是在导出按钮单击时绑定数据。

标签: c# asp.net excel gridview


【解决方案1】:

我解决了这个问题。在将 allowpaging 设置为 false 后,我没有绑定 gridview。以下是完整代码:

 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();
    }
}

另外,我设置 EnableEventValidation = "false" 的页面中的 .aspx 文件发生了另一个变化

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-25
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多