这种比前一种更好,此方法可以直接将数据库表导出到excel ,并不上绑定在某控件的数据表导出后还带有链接等后台的处理格外垃圾,故本人比较推荐使用此方法,希望大家可以借鉴借鉴

       

//由dataset导出Excel        
        public void CreateExcel(DataSet ds,string typeid,string FileName) 
         { 
             HttpResponse resp; 
             resp = Page.Response; 
             resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); 
             resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName); 
             string colHeaders= "", ls_item=""; 
             int i=0; 

             //定义表对象和行对像,同时用DataSet对其值进行初始化 
            DataTable dt=ds.Tables[0]; 
             DataRow[] myRow=dt.Select(""); 
             // typeid=="1"时导出为EXCEL格式文档;typeid=="2"时导出为XML格式文档 
            if(typeid=="1") 
             { 
                 //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
                for(i=0;i<dt.Columns.Count;i++)
                 {                    
                     if(i==dt.Columns.Count-1)
                     {
                         colHeaders +=dt.Columns[i].Caption.ToString() +"\n";    
                     }
                     else
                     {
                         colHeaders+=dt.Columns[i].Caption.ToString()+"\t"; 
                     }
                 }
                 //向HTTP输出流中写入取得的数据信息 
                resp.Write(colHeaders); 
                 //逐行处理数据 
                foreach(DataRow row in myRow) 
                 { 
                     //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n 
                    for(i=0;i<dt.Columns.Count;i++)
                     {
                         
                         if(i==dt.Columns.Count-1)
                         {
                             ls_item += row[i].ToString() +"\n"; 
                         }
                         else
                         {
                             ls_item +=row[i].ToString() + "\t";  
                         }
                     }
                     //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 
                    resp.Write(ls_item); 
                     ls_item=""; 
                 } 
             } 
             else 
             { 
                 if(typeid=="2") 
                 { 
                     //从DataSet中直接导出XML数据并且写到HTTP输出流中 
                    resp.Write(ds.GetXml()); 
                 } 
             } 
             //写缓冲区中的数据到HTTP头文档中 
            resp.End(); 
         }