2017-10-18 10 views
0

Je souhaite générer un fichier CSV dans mon dossier avec les données provenant de datatable. J'ai écrit le code ci-dessous pour cela.CSV n'est pas généré dans le dossier pour l'application console

public static void CreateCSV(DataTable dt, string FileName) 
    { 
     try 
     { 
      string strFilePath = ConfigurationSettings.AppSettings["ExcelFilePath"].ToString() + "\\" + FileName; 
      if (!Directory.Exists(ConfigurationSettings.AppSettings["ExcelFilePath"].ToString())) 
       Directory.CreateDirectory(ConfigurationSettings.AppSettings["ExcelFilePath"].ToString()); 

      StreamWriter sw = new StreamWriter(strFilePath, false); 
      DataTable dTemp = dt; 

      int iColCount = dTemp.Columns.Count; 
      for (int i = 0; i < iColCount; i++) 
      { 
       sw.Write(dTemp.Columns[i]); 
       if (i < iColCount - 1) 
       { 
        sw.Write(","); 
       } 
      } 
      sw.Write(sw.NewLine); 

      foreach (DataRow dr in dTemp.Rows) 
      { 
       for (int i = 0; i < iColCount; i++) 
       { 
        if (!Convert.IsDBNull(dr[i])) 
        { 

         if (dr[i].ToString().Contains("\n")) 
         { 
          string x = dr[i].ToString().Replace("\n", ""); 
          string xc = RemoveSpecialCharacters(x); 
          string xc1 = RemoveSpecialCharacters1(xc); 
          //sw.Write(x); 
          sw.Write(xc1.Replace(", ", "")); 
         } 
         else 
         { 
          string x = dr[i].ToString().Replace(",", ""); 
          string xc = RemoveSpecialCharacters(x); 
          string xc1 = RemoveSpecialCharacters1(xc);         
          sw.Write(xc1.Replace(", ", ""));        
         } 
        } 
        if (i < iColCount - 1) 
        { 
         sw.Write(","); 
        } 
       } 
       sw.Write(sw.NewLine); 
      } 
      sw.Close();    
     } 
     catch (Exception ex) 
     { 
      //ErrorLog.Insert(ex.Message, ex.StackTrace, "Program.cs - MailReport", null); 
     } 
    } 

Et le chemin du dossier que je mets dans le fichier ci-dessous app.config est

<add key="ExcelFilePath" value="ExcelData" />

mais le csv ne se crée. Ai-je manqué quelque chose, aimablement aider

+0

Quelle est la valeur de strFilePath lorsque vous le déboguez? – qxg

+0

@qxg: la valeur est 'ExcelData \ Generated_File_Record.csv' – BNN

+0

Fonctionne avec ExcelFilePath = C: \ temp et FileName = test.csv, en ignorant RemoveSpecialCharacters car je ne sais pas à quoi ressemble votre implémentation. – Greg

Répondre

1

Vous avez toujours un chemin relatif pas un absolu. Vous avez besoin d'un absolu.

Utilisez

strFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationSettings.AppSettings["ExcelFilePath"].ToString(), FileName);

et

Directory.CreateDirectory(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationSettings.AppSettings["ExcelFilePath"].ToString()));

pour créer le répertoire. Aucun besoin de vérifier si le répertoire existe, CreateDirectory essayera seulement de le créer s'il n'existe pas.

+0

ok laissez-moi essayer et vérifier .. !! – BNN

+0

thanku mate, son fonctionne maintenant correctement – BNN