导出文件

//导出文件

public static void ToDocument( DataSet ds , string type , string filename )
  {
   DataRow[] drArray = ds.Tables[0].Select("") ;
   string strHeader = "" ;
   //根据DataSet得到要导出的内容
   for( int i = 0 ; i < ds.Tables[0].Columns.Count ; i++ )
   {
    if( i == ds.Tables[0].Columns.Count -1 )
    {
     strHeader += ds.Tables[0].Columns[i].Caption + "\n" ;
    }
    else
    {
     strHeader += ds.Tables[0].Columns[i].Caption + "\t" ;
    }
   }

   string strData = "" ;
   //逐行获取数据
   foreach( DataRow dr in drArray )
   {
    for( int i = 0 ; i < ds.Tables[0].Columns.Count ; i++ )
    {
     if( i == ds.Tables[0].Columns.Count -1 )
     {
      strData += dr[i].ToString() + "\n" ;
     }
     else
     {
      strData += dr[i].ToString() + "\t" ;
     }
    }
   }

   ToDocument(strHeader+strData,type,filename) ;
  }


 

public static void ToDocument(System.Web.UI.Control body,string type,string filename)
  {
   string fileType = "application/ms-excel";  //文件类型

   //转换用户输入的type,全部为大写防止选择失败
   type = type.ToUpper().Trim();

   switch(type)
   {
    case "EXCEL":
    {
     filename+=".xls";
     fileType = "application/ms-excel";
     break;
    }
    case "WORD":
    {
     filename+=".doc";
     fileType = "application/ms-word";
     break;
    }
    case "JPEG":
    {
     filename+=".jpeg";
     fileType = "image/JPEG";
     break;
    }
    case "GIF":
    {
     filename+=".gif";
     fileType = "image/GIF";
     break;
    }
    case "HTML":
    {
     filename+=".html";
     fileType = "text/HTML";
     break;
    }
    case "CSV":
    {
     filename+=".csv";
     fileType = "application/octet-stream";
     break;
    }
    case "TXT":
    {
     filename+=".txt";
     fileType = "text/plain";
     break;
    }
   }
   //清除Response缓存内容
   HttpContext.Current.Response.Clear();
   HttpContext.Current.Response.Buffer= true;

   //确定字符的编码格式
   HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(filename));
   HttpContext.Current.Response.ContentType = fileType;
   HttpContext.Current.Response.Charset ="GB2312";
   HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.GetEncoding("GB2312");

   try
   {
    body.Page.EnableViewState = false;
   }
   catch
   {}

   //表体空间
   System.IO.StringWriter swBody = new System.IO.StringWriter() ;
   System.Web.UI.HtmlTextWriter hwBody = new System.Web.UI.HtmlTextWriter (swBody);
   body.RenderControl(hwBody);

   //消除乱码特别设定,非常规方法
   string strExcel = "" ;
   strExcel = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">";
   strExcel += hwBody.InnerWriter.ToString();

   HttpContext.Current.Response.Write(strExcel);
   HttpContext.Current.Response.End();
  }

 

调用方法:Common.ToDocument(ds,"excel","进出库流水信息") ;

ToDocument方法在Common文件中。

posted on 2009-01-04 13:31  jameshappy  阅读(357)  评论(0编辑  收藏  举报