zoukankan      html  css  js  c++  java
  • 将DataGrid导出到Excel

           最近做的项目客户要求将DataGrid中的数据导出到Excel中,于是我这几天一直在找比较好的解决方案,不是内容不全就是找不到我理想的生成Excel方法(由于项目需要导出到Excel时,保存该Excel文件需要中文名。)。今天终于有所收获,希望我的这个能对大家解决类似的问题有所帮助。
    写了一个导出到Excel的类:
    /// <summary>从DataGrid导出指定类型的文件</summary>
      /// <summary>Super 2005/8/18</summary>
      /// <param name="ctl">DataGrid的ID</param>
      /// <param name="FileType">导出文件类型//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword ;//application/ms-excel</param>
      /// <param name="FileName">导出的文件名</param>
      /// <returns>文件</returns>
      public static void ExportDataGrid(System.Web.UI.Control ctl,string FileType, string FileName)
      {
       HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+FileName); 
        HttpContext.Current.Response.Charset ="gb2312"; 
        HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.UTF8;
        HttpContext.Current.Response.ContentType
        =FileType;//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword ;//application/ms-excel
       ctl.Page.EnableViewState =false;
       System.IO.StringWriter tw = new System.IO.StringWriter() ;    
       System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);   
       ctl.RenderControl(hw);
       HttpContext.Current.Response.Write(tw.ToString());
       HttpContext.Current.Response.End();
      }
    只要调用导出到Excel类就ok了
    private void btnExportToExcel_Click(object sender, System.Web.UI.ImageClickEventArgs e)
      {
        try
       {
        if( grid.Items.Count == 0 )
        {
         throw new Exception("没有数据不能导出!");
        }
        string FileName="中文报表";
        FileName=System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)+".xls";   
        Common.ExportDataGrid(grid,"application/ms-excel",FileName);
       }
       catch(Exception ex)
       {
        Response.Write("<script language =javascript >alert('"+ex.Message+"');</script>");
        return;
       }
      }
    这只是简单的导出到Excel中解决方法,应该还有更多更好的方法吧,希望能在以后的学习工作中不断地总结。
  • 相关阅读:
    C++ 多线程
    C++ 信号处理
    首页流量监控代码
    macro-name replacement-text 宏 调试开关可以使用一个宏来实现 do { } while(0)
    color depth 色彩深度 像素深度
    数据更新 数据同步 起始点 幂等同步历史数据
    获取当前调用函数名 方法名
    版本号风格为 Major.Minor.Patch
    query_string查询支持全部的Apache Lucene查询语法 低频词划分依据 模糊查询 Disjunction Max
    Cutoff frequency
  • 原文地址:https://www.cnblogs.com/yuyu/p/216027.html
Copyright © 2011-2022 走看看