2010-03-23 16 views
1

J'utilise le code ci-dessous pour exporter DataTable au format MS Word, Excel, CSV & cela fonctionne très bien. Mais le problème est que ce code exporter vers MS Word 2003, Excel 2003 version. J'ai besoin d'exporter mon DataTable vers Word 2007, Excel 2007, CSV parce que je suis supposé gérer plus de 100 000 enregistrements à la fois et comme nous le savons, Excel 2003 ne supporte que 65 000 enregistrements.Comment puis-je exporter un datatable à MS Word 2007, Excel 2007, csv de asp.net?

S'il vous plaît, aidez-moi si vous savez que comment exporter DataTable ou DataSet à MS Word 2007, Excel 2007.

public static void Convertword(DataTable dt, HttpResponse Response,string filename) 
{ 
     Response.Clear(); 
     Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".doc"); 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = "application/vnd.word"; 
     System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
     System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite); 
     System.Web.UI.WebControls.GridView dg = new System.Web.UI.WebControls.GridView(); 
     dg.DataSource = dt; 
     dg.DataBind(); 
     dg.RenderControl(htmlWrite); 
     Response.Write(stringWrite.ToString()); 
     Response.End(); 
     //HttpContext.Current.ApplicationInstance.CompleteRequest(); 

} 

    public static void Convertexcel(DataTable dt, HttpResponse Response, string filename) 
{ 

     Response.Clear(); 
     Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".xls"); 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = "application/vnd.ms-excel"; 
     System.IO.StringWriter stringWrite = new System.IO.StringWriter(); 
     System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite); 
     System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid(); 
     dg.DataSource = dt; 
     dg.DataBind(); 
     dg.RenderControl(htmlWrite); 
     Response.Write(stringWrite.ToString()); 
     Response.End(); 
     //HttpContext.Current.ApplicationInstance.CompleteRequest(); 

} 

public static void ConvertCSV(DataTable dataTable, HttpResponse Response, string filename) 
{ 

     Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".csv"); 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = "Application/x-msexcel"; 
     StringBuilder sb = new StringBuilder(); 
     if (dataTable.Columns.Count != 0) 
     { 
      foreach (DataColumn column in dataTable.Columns) 
      { 
       sb.Append(column.ColumnName + ','); 
      } 
      sb.Append("\r\n"); 
      foreach (DataRow row in dataTable.Rows) 
      { 
       foreach (DataColumn column in dataTable.Columns) 
       { 
        if(row[column].ToString().Contains(',')==true) 
        { 
         row[column] = row[column].ToString().Replace(",", ""); 
        } 
        sb.Append(row[column].ToString() + ','); 
       } 
       sb.Append("\r\n"); 
      } 
     } 
     Response.Write(sb.ToString()); 
     Response.End(); 
     //HttpContext.Current.ApplicationInstance.CompleteRequest(); 

} 

Répondre

2

Utilisez application/vnd.openxmlformats-officedocument.spreadsheetml.sheet