问题将网格视图数据导出到Excel

时间:2015-03-01 20:02:38

标签: c# asp.net excel gridview

我必须在我的网页中页面,它允许您搜索名称列表,并将结果返回到网格视图中。显示搜索结果时,将显示导出按钮。我在那里有导出按钮供用户单击,它将数据从网格视图导出为xlsx格式的excel。这是我目前的代码:

ASP

<asp:TableCell>
     <asp:DataGrid ID="ResultGrid" runat="server"
      AutoGenerateColumns="false"
      EnableViewState="false" 
</asp:TableCell>
<asp:TableCell>
     <asp:Button class="myClass" ID="export" runat="server" OnClick="ExportBtn_Click" Text="Export" />
</asp:TableCell>

C#

protected void ExportBtn_Click(object sender, EventArgs e)
    {
        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=myexcelfile.xls");

        Response.ContentType = "application/vnd.xls";

        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        ResultGrid.RenderControl(htw);
        Response.Write(sw.ToString());
        Response.End();
    }

    public override void VerifyRenderingInServerForm(Control control)
    {

    }

目前,这会下载一个空白的Excel文件...即使我的网格视图在搜索时有一个项目。

我的其他问题(即使我知道这是不赞成的),是如何导出为xlsx而不是xls。如果我将xls替换为xlsx,则会在我单击导出按钮时(当它尝试在Excel中打开时)告诉我格式错误。

总结一下,我的两个问题是:为什么它在excel中没有返回任何内容,即使我在网格视图中返回了一行以及如何导出为xlsx而不是xls

2 个答案:

答案 0 :(得分:0)

解决了!!! excel是空白的,因为你没有传递任何值

protected void ExportBtn_Click(object sender, EventArgs e)
{     
  ResultGrid();// Datagrid function to fill value 
 Response.ClearContent();
 Response.Buffer = true;
 Response.AddHeader("content-disposition", string.Format("attachment;    filename={0}", "myexcelfile.xls"));
 Response.ContentType = "application/ms-excel";
 StringWriter sw = new StringWriter();
 HtmlTextWriter ht = new HtmlTextWriter(sw);
 ResultGrid.RenderControl(ht);
 Response.Write(sw.ToString());
 Response.End();
}

答案 1 :(得分:-1)

当您导出到Excel时,您获得空白电子表格的原因是因为您没有以正确的方式执行此操作。

您可以使用 iTextSharp 等第三方正确执行此操作。

实际上,我在博客中写了一个工作示例:GridView To Excel

希望它可以帮助你。