2010-11-05 5 views
1

Je développe un projet web dans asp.net 3.5Export DataTable vers Excel

Je veux exporter la donnée vers Excel. Mais il y a 20 000 lignes dans datatable. Parfois, un problème de dépassement de délai se produit ..

protected string Worksheet97_Header() 
     { 
      string s = "<tr>"; 
      foreach (ExcelColumn col in Columns) 
      { 
       s += "<th>" + col.Header_Text + "</th>"; 
      } 
      s+="</tr>"; 
      return s; 
     } 
     protected string Worksheet97_Data() 
     { 
      string s = ""; 
      try 
      { 
       for (int i = 0; i < data.Rows.Count; i++) 
       { 
        s += "<tr>"; 
        foreach (ExcelColumn col in Columns) 
        { 
         if (col.Column_Type == "System.String") 
          s += "<td>" + data.Rows[i][col.Field_Name].ToString() + "</td>"; 
         if (col.Column_Type == "System.DateTime") 
          s += "<td>" + Convert.ToDateTime(data.Rows[i][col.Field_Name]).ToString("dd.MM.yyyy HH:mm:ss") + "</td>"; 
         if (col.Column_Type == "System.Int32") 
          s += "<td>" + data.Rows[i][col.Field_Name].ToString() + "</td>"; 
         if ((col.Column_Type == "System.Double") | 
          (col.Column_Type == "System.Decimal") | 
          (col.Column_Type == "System.Int16") | 
          (col.Column_Type == "System.Int32") | 
          (col.Column_Type == "System.Int64")) 

          s += "<td>" + Convert.ToDouble(data.Rows[i][col.Field_Name]).ToString("0.00") + "</td>"; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       string a = ex.ToString();    

      } 

      return s; 
     } 

     public string Export_Excel97() 
     { 
      string s = ""; 
      s = "<table border=\"1\">"; 
      s += Worksheet97_Header(); 
      s += Worksheet97_Data(); 
      s += "</table>"; 
      return s; 
     } 

Merci.

+0

S'il vous plaît poster plus d'informations (de préférence le code qui est le timing-out) et nous pouvons être en mesure de vous aider. – Codesleuth

+0

J'ai posté .. – Jack

Répondre

1

À mon humble avis, je pense que vous devriez page la requête de sorte que vous ne chargez pas tout en mémoire.

Pour écrire le fichier Excel, vous pouvez aussi essayer cette solution et comparer les résultats de la performance: http://msmvps.com/blogs/deborahk/archive/2009/07/23/writing-data-from-a-datatable-to-excel.aspx qui utilisera la bibliothèque d'objets Microsoft Excel, vous aurez donc besoin d'installer Excel dans la machine sur laquelle vous exécutez votre code.

HTH en quelque sorte.

Cordialement!