asp.net数据导出到Excel (从网络摘操)

一、无格式的导出
     就是导出时没有任何格式,完全对文件写入,这个比较难看,但是实用。

asp.net数据导出到Excel (从网络摘操)   /// <summary>
asp.net数据导出到Excel (从网络摘操)    
/// 该方法实现将数据导入到Excel文件中,其中的DataTable dt就是你需要将数据写入到Excel中的数据;
asp.net数据导出到Excel (从网络摘操)    
/// </summary>
asp.net数据导出到Excel (从网络摘操)    
/// <param name="dt">导出的数据源</param>
asp.net数据导出到Excel (从网络摘操)    
/// <param name="w">文件流</param>

asp.net数据导出到Excel (从网络摘操)      public   void  ExportExcel(DataTable dt, System.IO.StreamWriter w)
asp.net数据导出到Excel (从网络摘操)    
{
asp.net数据导出到Excel (从网络摘操)        
//HttpResponse resp;
asp.net数据导出到Excel (从网络摘操)        
//resp = Page.Response;
asp.net数据导出到Excel (从网络摘操)        
//resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
asp.net数据导出到Excel (从网络摘操)        
//resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
asp.net数据导出到Excel (从网络摘操)
        string colHeaders = "", ls_item = "";
asp.net数据导出到Excel (从网络摘操)
asp.net数据导出到Excel (从网络摘操)        
//定义表对象与行对象,同时用DataSet对其值进行初始化          
asp.net数据导出到Excel (从网络摘操)
        DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
asp.net数据导出到Excel (从网络摘操)
        int i = 0;
asp.net数据导出到Excel (从网络摘操)        
int cl = dt.Columns.Count;
asp.net数据导出到Excel (从网络摘操)
asp.net数据导出到Excel (从网络摘操)        
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符 
asp.net数据导出到Excel (从网络摘操)
        for (i = 0; i < cl; i++)
asp.net数据导出到Excel (从网络摘操)        
{
asp.net数据导出到Excel (从网络摘操)            
if (i == (cl - 1))//最后一列,加n
asp.net数据导出到Excel (从网络摘操)
            {
asp.net数据导出到Excel (从网络摘操)                colHeaders 
+= dt.Columns[i].Caption.ToString() + "\n";
asp.net数据导出到Excel (从网络摘操)            }

asp.net数据导出到Excel (从网络摘操)            
else
asp.net数据导出到Excel (从网络摘操)            
{
asp.net数据导出到Excel (从网络摘操)                colHeaders 
+= dt.Columns[i].Caption.ToString() + "\t";
asp.net数据导出到Excel (从网络摘操)            }

asp.net数据导出到Excel (从网络摘操)
asp.net数据导出到Excel (从网络摘操)        }

asp.net数据导出到Excel (从网络摘操)        
// resp.Write(colHeaders);
asp.net数据导出到Excel (从网络摘操)
        w.Write(colHeaders);
asp.net数据导出到Excel (从网络摘操)        
//向HTTP输出流中写入取得的数据信息 
asp.net数据导出到Excel (从网络摘操)
asp.net数据导出到Excel (从网络摘操)        
//逐行处理数据   
asp.net数据导出到Excel (从网络摘操)
        foreach (DataRow row in myRow)
asp.net数据导出到Excel (从网络摘操)        
{
asp.net数据导出到Excel (从网络摘操)            
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据     
asp.net数据导出到Excel (从网络摘操)
            for (i = 0; i < cl; i++)
asp.net数据导出到Excel (从网络摘操)            
{
asp.net数据导出到Excel (从网络摘操)                
if (i == (cl - 1))//最后一列,加n
asp.net数据导出到Excel (从网络摘操)
                {
asp.net数据导出到Excel (从网络摘操)                    ls_item 
+= row[i].ToString() + "\n";
asp.net数据导出到Excel (从网络摘操)                }

asp.net数据导出到Excel (从网络摘操)                
else
asp.net数据导出到Excel (从网络摘操)                
{
asp.net数据导出到Excel (从网络摘操)                    ls_item 
+= row[i].ToString() + "\t";
asp.net数据导出到Excel (从网络摘操)                }

asp.net数据导出到Excel (从网络摘操)
asp.net数据导出到Excel (从网络摘操)            }

asp.net数据导出到Excel (从网络摘操)            w.Write(ls_item);
asp.net数据导出到Excel (从网络摘操)            ls_item 
= "";
asp.net数据导出到Excel (从网络摘操)
asp.net数据导出到Excel (从网络摘操)        }

asp.net数据导出到Excel (从网络摘操)        
//resp.End();
asp.net数据导出到Excel (从网络摘操)
        w.Flush();
asp.net数据导出到Excel (从网络摘操)        w.Close();
asp.net数据导出到Excel (从网络摘操)    }

二、直接从Gridview里导出
    这种导出是所见既所得的方式,就是显示在gridview里是什么样导出就是什么样了,这个导出就好看多了,谢谢~!@
asp.net数据导出到Excel (从网络摘操)   this .Panel1.Visible  =   false ;           
asp.net数据导出到Excel (从网络摘操)            Response.Clear();
asp.net数据导出到Excel (从网络摘操)            Response.Buffer 
=   true ;
asp.net数据导出到Excel (从网络摘操)            Response.Charset 
=   " GB2312 " ;
asp.net数据导出到Excel (从网络摘操)            
string  filename  =   " Task " + System.DateTime.Now.Year.ToString()  +  System.DateTime.Now.Month.ToString()  +  System.DateTime.Now.Day.ToString()  +  System.DateTime.Now.Hour.ToString()  +  System.DateTime.Now.Minute.ToString() + " .xls " ;
asp.net数据导出到Excel (从网络摘操)            Response.AppendHeader(
" Content-Disposition " " attachment;filename= " +System.Web.HttpUtility.UrlEncode( filename));
asp.net数据导出到Excel (从网络摘操)            
//  如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!!
asp.net数据导出到Excel (从网络摘操)
            Response.ContentEncoding  =  System.Text.Encoding.UTF7;
asp.net数据导出到Excel (从网络摘操)            Response.ContentType 
=   " application/ms-excel " ; // 设置输出文件类型为excel文件。 
asp.net数据导出到Excel (从网络摘操)
            System.IO.StringWriter oStringWriter  =   new  System.IO.StringWriter();
asp.net数据导出到Excel (从网络摘操)            System.Web.UI.HtmlTextWriter oHtmlTextWriter 
=   new  System.Web.UI.HtmlTextWriter(oStringWriter);
asp.net数据导出到Excel (从网络摘操)            
this .GridView1.RenderControl(oHtmlTextWriter);  // 读取数据了
asp.net数据导出到Excel (从网络摘操)
            Response.Output.Write(oStringWriter.ToString());
asp.net数据导出到Excel (从网络摘操)            Response.Flush();
asp.net数据导出到Excel (从网络摘操)            Response.End();
asp.net数据导出到Excel (从网络摘操)            
this .Panel1.Visible  =   true ;     

由于ReaderControl方法会重调客户端的一个方法验证,如果不重载的话会报错
asp.net数据导出到Excel (从网络摘操)   public   override   void  VerifyRenderingInServerForm(Control control)
asp.net数据导出到Excel (从网络摘操)    
{
asp.net数据导出到Excel (从网络摘操)        
//base.VerifyRenderingInServerForm(control);   
asp.net数据导出到Excel (从网络摘操)
    }
  

你可能感兴趣的:(asp.net)