asp.net导出excel文件方法之一

    public void Data2Excel(DataTable dtData)
    {
        System.Web.UI.WebControls.DataGrid dgExport = null;
            // 当前对话 
           System.Web.HttpContext curContext = System.Web.HttpContext.Current; 
            // IO用于导出并返回excel文件 
            System.IO.StringWriter strWriter = null; 
           System.Web.UI.HtmlTextWriter htmlWriter = null;

           if (dtData != null)
           {
               // 设置编码和附件格式 
               curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=ExportStudentInfo.xls");
               curContext.Response.ContentType = "application/vnd.ms-excel";
               curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
               curContext.Response.Charset = "";

               // 导出excel文件 
               strWriter = new System.IO.StringWriter();
               htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);

               // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid 
               dgExport = new System.Web.UI.WebControls.DataGrid();
               dgExport.ItemDataBound += new DataGridItemEventHandler(dgExport_ItemDataBound);
               dgExport.DataSource = dtData.DefaultView;
               dgExport.AllowPaging = false;
               dgExport.DataBind();

               // 返回客户端 
               dgExport.RenderControl(htmlWriter);
               curContext.Response.Write(strWriter.ToString());
               curContext.Response.End();
           }
    }

    void dgExport_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            e.Item.Cells[3].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
            e.Item.Cells[5].Attributes.Add("style", "vnd.ms-excel.numberformat:@");
        }
    }
posted @ 2012-12-03 15:43  ``炯``  阅读(195)  评论(0编辑  收藏  举报