DataTable导出到Excel文件

  /// <summary>
  /// DataTable导出到Excel文件
  /// </summary>
  /// <param name="dtable"></param>
  public static bool DataTableToExcel(DataTable dtable)
  {
   if (dtable != null && dtable.Rows.Count > 0)
   {
    //设置基本信息
    HttpResponse resp = HttpContext.Current.Response;
    try
    {
     resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
     resp.ContentType = "application/vnd.ms-excel";
     resp.AddHeader("Content-Disposition", "attachment; filename=" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".xls");
     //this.EnableViewState = false;
     string colHeaders = "", Is_item = "";
     //设置数据表各列标题,标题之间以\t分割,最后一个列标题后加回车符
     for (int i = 0; i < dtable.Columns.Count; i++)
     {
      if (i != dtable.Columns.Count - 1)
       colHeaders += dtable.Columns[i].ToString() + "\t";
      else
       colHeaders += dtable.Columns[i].ToString() + "\n";
     }
     resp.Write(colHeaders);
     //逐列取得数据,数据之间以\t分割,结束时加回车符\n
     for (int i = 0; i < dtable.Rows.Count; i++)
     {
      for (int j = 0; j < dtable.Columns.Count; j++)
      {
       if (j != dtable.Columns.Count - 1)
        Is_item += NoHTML(dtable.Rows[i][j].ToString()) + "\t";//yzh 2013-3-14 添加NoHTML处理
       else
        Is_item += NoHTML(dtable.Rows[i][j].ToString()) + "\n";
      }
      resp.Write(Is_item);

      Is_item = "";
     }
     //写缓冲区中的数据到HTTP头文件中
     resp.End();
     return true;
    }
    catch (System.Threading.ThreadAbortException ex)
    {
     throw ex;
    }
    catch (Exception exx)
    {
     LogHelper.WriteLog("报表统计-担保公司业务统计导出异常:", exx);
     return false;
    }
    finally
    {
     resp.End();
    }
   }
   else
   {
    return false;
   }
  }

posted @ 2014-01-23 09:21  顿金  阅读(212)  评论(0)    收藏  举报