GridView导出到Excel的一个很简单实用的列子

     GridView导出到Excel的一个很简单实用的列子

     项目有个需求是是要把当前数据库中几个有关联的表中数据导出到一张Excel表中,方便参考,后面经过一番搜索和实践,最后成功实现该功能,现把自己实现的代码贴出来供大家参考,只是参考,各位看官有更好的方法或者效率方面更好的可以贴出来,大家一起学习,废话不多说,直接上代码和实现结果截图。
前台代码:
  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Height="227px"
            Width="100%">
            <Columns>
                <asp:TemplateField>
                    <HeaderTemplate>
                        类别
                    </HeaderTemplate>
                    <ItemTemplate>
                    <asp:Label ID="lb_type" runat="server" Text='<%#Eval("OBJ_WebSiteCategory.website_category_name") %>'></asp:Label>
                    </ItemTemplate>
<%--                    <EditItemTemplate>
                        <asp:Label ID="lb_type" runat="server" Text="<%#Eval('OBJ_WebSiteCategory.website_category_name') %>"></asp:Label>
                    </EditItemTemplate>--%>
                </asp:TemplateField>
                <asp:BoundField DataField="website_pc_productname" HeaderText="商品名" />
                <asp:BoundField DataField="website_pc_url" HeaderText="商品地址" />
                <asp:BoundField DataField="website_pc_sells" HeaderText="销量" />
            </Columns>
        </asp:GridView>
后台代码:
 protected void Page_Load(object sender, EventArgs e)
    {
        WebSiteProduct[] wps = new WebSiteProduct(Operator).SFunc_GetProductsByCategoryId(-1);
        GridView1.DataSource = wps;
        GridView1.DataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataToExcel(this, GridView1);
    }
    public static void DataToExcel(Page p, Control c)
    {
        p.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
        p.Response.Charset = "";

        p.Response.ContentType = "application/vnd.ms-excel";
        p.EnableViewState = false;

        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);


        p.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("汇总报表.xls", System.Text.Encoding.UTF8));
        c.RenderControl(hw);
        p.Response.Write(tw.ToString());
        p.Response.End();

    }
//必须加上这句,不然直接会报错
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
这里有几个地方要解释下:
1、 <asp:Label ID="lb_type" runat="server" Text='<%#Eval("OBJ_WebSiteCategory.website_category_name") %>'></asp:Label>,这个是和这个对象关联的表中的类别字段名
2、WebSiteProduct[] wps = new WebSiteProduct(Operator).SFunc_GetProductsByCategoryId(-1);,这是获取这个列表的集合,只是实现方式不同而已,实际就看做你获取的对象集合而已
最后来个图,有图有真相:
GridView导出到Excel的一个很简单实用的列子_第1张图片

就这么多,代码很简洁,实现这些功能实际还有很多方法,下次有时间来个大总结吧。

你可能感兴趣的:(GridView导出到Excel的一个很简单实用的列子)