asp.net gridview导出Excel、World文档

 对于大量的数据,有时候导出到Excel中将更加方便进行数据统计分析,而对于排版打印则导出到World文档中更加方便。在ASP.NET可以通过少量代码实现这两种导出。

        新建一页面,该页面布局Html源码如下:

<form id="form1" runat="server"><div>
        <asp:Button ID="cmdOpen" runat="server" Text="在线打开" CommandName="open" OnCommand="Button_Click" />&nbsp;<asp:Button ID="cmdSave"
            runat="server" Text="本地保存" CommandName="save" OnCommand="Button_Click" />
        <asp:DropDownList ID="listType" runat="server">
            <asp:ListItem Value="excel">Excel</asp:ListItem>
            <asp:ListItem Value="word">Word</asp:ListItem>
        </asp:DropDownList><br />
        <br />
        数据源:<br />
        <br />
        <asp:GridView ID="myGW" runat="server">
        </asp:GridView>
    </div></form>

       这里没有什么特别的,只需要注意在线打开与本地保存两个按钮通过CommandName进行检验并触发相应的动作,DropDownList控件存放了可以导出的格式,可以自己添加如txt、html等格式。准备工作就绪以后,可以进行代码的书写,以完成我们需要的功能:

    protected void Page_Load(object sender, EventArgs e)
    {
        FillGridView();
    }
    private void OutPut(string fileType, string strType)
    {
        Response.Clear();
        Response.Buffer = true;
        Response.Charset = "GB2312";
        Response.AppendHeader("Content-Disposition", fileType);
        Response.ContentType = strType;
        this.EnableViewState = false;
        System.IO.StringWriter swOut = new System.IO.StringWriter();
        HtmlTextWriter hTw = new HtmlTextWriter(swOut);
        myGW.RenderControl(hTw);
        Response.Write(swOut.ToString());
        Response.End();
    }
    protected void Button_Click(object sender, CommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "save":
                switch (listType.SelectedValue)
                {
                    case "excel":
                        OutPut("attachment;filename=out.xls", "application/ms-excel");
                        break;
                    case "word":
                        OutPut("attachment;filename=out.doc", "application/ms-word");
                        break;
                }
                break;
            case "open":
                switch (listType.SelectedValue)
                {
                    case "excel":
                        OutPut("online;filename=out.xls", "application/ms-excel");
                        break;
                    case "word":
                        OutPut("online;filename=out.doc", "application/ms-word");
                        break;
                }
                break;
        }
    }
    public override void VerifyRenderingInServerForm(Control control)
    {
    }
    private void FillGridView()
    {
        string strConn = "server=localhost//sqlexpress;database=Northwind;user id=sa;password=sa123";
        SqlConnection conn = new SqlConnection(strConn);
        SqlCommand comm = new SqlCommand();
        comm.Connection = conn;
        string strSql = "select * from Categories";
        comm.CommandText = strSql;
        conn.Open();
        this.myGW.DataSource = comm.ExecuteReader();
        this.myGW.DataBind();
        conn.Close();
    }

      在以上的程序中,最主要的就是函数OutPut(string fileType, string strType),它完成导出或在线打开的动作,这里接受两个参数其中fileType指定是保存或在线打开,并且指名了文件的名字如:attachment;filename=out.xls(作为附件保存,文件名为out.xls)、online;filename=out.xls(在线打开);strType指定了带出文档的格式如application/ms-excel。

      注意如果想要导出GridView中的数据并且要我们的程序顺利执行,则必须重写VerifyRenderingInServerForm(Control control),否则会报错的。

      如果我们想要将整个页面导出到Excel中,则不需要重写VerifyRenderingInServerForm,只需要将OutPut函数中的myGW.RenderControl(hTw)改为this.RenderControl(hTw)就可以了。

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值