Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将gridview导出到excel,给出空excel工作表_C#_Asp.net_Excel_Gridview - Fatal编程技术网

C# 将gridview导出到excel,给出空excel工作表

C# 将gridview导出到excel,给出空excel工作表,c#,asp.net,excel,gridview,C#,Asp.net,Excel,Gridview,我在按钮单击事件中将gridview导出到excel工作表,但导出的excel工作表仅显示以下信息 而不是gridview数据。如果“导出”按钮内的代码单击 private void ExportGridView(object sender, EventArgs e) { Response.Clear(); Response.Buffer = true; Response.AddHeader("content-dispositio

我在按钮单击事件中将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 */
    }
private void ExportGridView(对象发送方,事件参数e)
{
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=GridViewExport.xls”);
响应。Charset=“”;
Response.ContentType=“application/vnd.ms excel”;
使用(StringWriter sw=new StringWriter())
{
HtmlTextWriter hw=新的HtmlTextWriter(sw);
//导出所有页面的步骤
GridView1.AllowPaging=false;
GridView1.DataBind();
GridView1.渲染控制(hw);
//将数字格式化为字符串的样式
字符串样式=@“.textmode{}”;
回应。写作(风格);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
}
公共覆盖无效VerifyRenderingInServerForm(控件)
{
/*验证是否呈现控件*/
}
另外,aspx for gridview中的代码是

   ......
 <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>
。。。。。。

我解决了这个问题。在将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();
    }
}
private void ExportGridView(对象发送方,事件参数e)
{
Response.Clear();
Response.Buffer=true;
AddHeader(“内容处置”、“附件;文件名=GridViewExport.xls”);
响应。Charset=“”;
Response.ContentType=“application/vnd.ms excel”;
使用(StringWriter sw=new StringWriter())
{
HtmlTextWriter hw=新的HtmlTextWriter(sw);
//导出所有页面的步骤
GridView1.AllowPaging=false;
//GridView1.DataBind();
GridView1.渲染控制(hw);
//将数字格式化为字符串的样式
字符串样式=@“.textmode{}”;
回应。写作(风格);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
}
}

另外,在绑定GridView的页面I set EnableEventValidation=“false”

中的.aspx文件中有另一个更改?你能分享codebehind的完整代码吗?GridView数据源绑定。尝试注释第一次写入响应流的部分,即
response.write(样式)我的理论是,因为这是excel看到的第一件事,而不是表标记,所以它不会将其呈现为表。另外,我应该指出,这并不是最好的方法。是的,您可以将gridview的呈现(一个html表)输出到Excel,但这实际上并不一致。查看NPOI以创建excel文档或类似内容。@priya777我解决了这个问题。原因之一是绑定了导出按钮中的数据。