Asp.net导出Excel(二)

      对于大量的数据,导出Excel的方式。
     上篇博客介绍了导出Excel一种方式:通过DataTable
      这篇博客,介绍另一中导出Excel方式-通过DataGrid.
 
      导出Excel的过程:
      虽然这次是通过DataGrid导出Excel,但是不是从界面上DataGrid控件导出Excel。因为这次实际项目中的需求是把查询到的信息导出Excel,界面上的DataGrid控件只显示一部分,也就是正如上篇博客中提到控件实现了分页,所以不可以直接从界面控件导出。
      但是实现的过程一样,只不过,这次DataGrid是动态生成的。
       
      此导出过程用到StringWriter类(将文本信息写入字符串),HtmlTextWriter类:将标记字符和文本写入到 ASP.NET 服务器控件输出流。(命名空间:System.Web.UI)
      Control.RenderControl (HtmlTextWriter) ——将服务器控件的内容输出到所提供的 HtmlTextWriter 对象中。
     然后respose输出StringWriter对象。
   

  1. /// <summary>  
  2.    /// 导出Excel  
  3.    /// </summary>  
  4.    /// <param name="dt"></param>  
  5.    /// <param name="ExportFileName"></param>  
  6.    protected void ExcelExport(DataTable dt, string ExportFileName)  
  7.    {  
  8.        DataGrid dgExcel = new DataGrid();  
  9.        dgExcel.DataSource = dt;  
  10.        dgExcel.DataBind();  
  11.   
  12.        HttpContext.Current.Response.Charset = "GB2312";  
  13.        string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8);  
  14.        string str="attachment;filename="+fileName+".xls";  
  15.        HttpContext .Current .Response .ContentEncoding =System.Text.Encoding .UTF7;  
  16.        HttpContext.Current.Response .ContentType ="application/ms-excel";  
  17.        HttpContext .Current .Response .AppendHeader ("content-disposition",str);  
  18.   
  19.         StringWriter sw = new StringWriter();  
  20.        HtmlTextWriter htmTextWriter = new HtmlTextWriter(sw);  
  21.        dgExcel .RenderControl(htmTextWriter );  
  22.        Response .Write(sw);  
  23.        Response .End();  
  24.   
  25.    }  
  1. /// <summary>  
  2.     /// 导出excel按钮  
  3.     /// </summary>  
  4.     /// <param name="sender"></param>  
  5.     /// <param name="e"></param>  
  6.     protected void btnExport_Click(object sender, EventArgs e)  
  7.     {  
  8.         DataTable dt = new SelectClassRoomManager().SelectClassRoomByTypeBuildNo(ddlClassType.SelectedValue, ddlBuildingID.SelectedValue);  
  9.         if (dt.Rows.Count == 0)  
  10.             Response.Write("<script>alert('没有数据,没有必要导出啊哈');</script>");  
  11.         else  
  12.         {  
  13.               
  14.             //导出excel  
  15.             ExcelExport(dt, "教室");  
  16.         }  
  17.     }  


   其中用DataGrid导出Excel的时候,其导出的文件名编码:

    string fileName = HttpUtility.UrlEncode(ExportFileName, System.Text.Encoding.UTF8);

    其导出的当前文件编码:

      HttpContext .Current .Response .ContentEncoding =System.Text.Encoding .UTF7;

 

   但是这两种导出的Excel的文件不同,内容是一样的,但是其格式不同,使用上篇博客DataTable导出Excel,是真正的excel,而使用DataGrid导出的Excel,貌似有点类似记事本。还是贴的图,大家看看吧。

     DataTable导出的Excel 如下:

   

      而DataGrid导出的Excel如下:

      

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值