GridView导入到Excel

本文是通过查看http://www.cnblogs.com/stswordman/archive/2006/08/24/485641.html的例子的修改,具体步骤看上面的链接就可以了

 1//绑定数据的部分
 2private void ExcelGridView()
 3    {
 4        Order order = new Order();//函数类
 5
 6         grdFOrderSearch.DataSource = order.QueryConsignList_FW();//查询函数
 7        
 8         grdFOrderSearch.DataBind();
 9    }

10//在导出Excel中,移除GridView中用到控件,只以数据的形式导出
11    private void DisableControls(Control gv)
12    {
13        LinkButton lb = new LinkButton();
14        Literal l = new Literal();
15        string name = String.Empty;
16
17        for (int i = 0; i < gv.Controls.Count; i++)
18        {
19            if (gv.Controls[i].GetType() == typeof(LinkButton))
20            {
21                l.Text = (gv.Controls[i] as LinkButton).Text;
22                gv.Controls.Remove(gv.Controls[i]);
23                gv.Controls.AddAt(i, l);
24            }

25            else if (gv.Controls[i].GetType() == typeof(VesselLinkButton) //其中VesselLinkButton为自定义控件
26            {
27                l.Text = (gv.Controls[i] as VesselLinkButton).Text;
28                gv.Controls.Remove(gv.Controls[i]);
29                gv.Controls.AddAt(i, l);
30            }

31            else if (gv.Controls[i].GetType() == typeof(HyperLink))
32            {
33                l.Text = (gv.Controls[i] as HyperLink).Text;
34                gv.Controls.Remove(gv.Controls[i]);
35                gv.Controls.AddAt(i, l);
36            }

37            if (gv.Controls[i].HasControls())
38            {
39                DisableControls(gv.Controls[i]);
40            }

41
42        }

43
44    }

45
46//此句不可少
47 public override void VerifyRenderingInServerForm(Control control)
48    { }
49
50    protected void grdFOrderSearch_RowDataBound(object sender, GridViewRowEventArgs e)
51    {
52        if (e.Row.RowType == DataControlRowType.DataRow)
53        {
54            //正确显示以零开头的数据项
55            e.Row.Cells[1].Attributes.Add("style""vnd.ms-excel.numberformat:@;");
56            e.Row.Cells[2].Attributes.Add("style""vnd.ms-excel.numberformat:@;");
57        }

58    }

59
60//导出到Excel,如有分页可以导出全部数据
61    protected void btnExcel_Click(object sender, EventArgs e)
62    {
63        
64        Response.ClearContent();
65
66        Response.AddHeader("content-disposition""attachment; filename=MyExcelFile.xls");
67
68        Response.ContentType = "application/excel";
69
70        StringWriter sw = new StringWriter();
71
72        HtmlTextWriter htw = new HtmlTextWriter(sw);
73
74        grdFOrderSearch.AllowPaging = false;
75
76        ExcelGridView();
77
78        DisableControls(grdFOrderSearch);
79
80        grdFOrderSearch.RenderControl(htw);
81
82        Response.Write(sw.ToString());
83
84        Response.End();
85
86        grdFOrderSearch.AllowPaging = true;
87
88        ExcelGridView();
89
90    }

91
如果有出现乱码的情况就加上这一句
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF7;
原文地址:https://www.cnblogs.com/roc/p/553268.html