2015-10-05 46 views
0

我有我的DatagridCells出口.CSV代碼,但我有一個問題,閱讀它通過MetaTrader的終端程序作爲.CSV文件是具有第一行中的空白處以及之後,.CSV文件可能會在一段時間內變爲空白並恢復正常。寫一個DataGridView到一個CSV文件返回空行有時

這是我的代碼或與DataGridView s?

public void writeCSV2(DataGridView gridIn, string outputFil) 
    { 
     if (!Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.MyComputer) + "\\Useful\\")) 
     { 
      Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyComputer) + "\\Useful\\"); 
     } 
     if (gridIn.RowCount > 0) 
     { 
      string value = ""; 
      DataGridViewRow dr = new DataGridViewRow();// 
      //write DataGridView rows to csv 
      for (int j = 0; j <= gridIn.Rows.Count - 1; j++) 
      { 
       dr = gridIn.Rows[j]; 
       var oFile = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer)+"\\Useful\\" +dr.Cells[0].Value.ToString() + ".csv"; 
       using (StreamWriter swOut = new StreamWriter(oFile)) 
       { 

        if (j > 0) 
        { 
         swOut.WriteLine(); 
        } 
        for (int i = 0; i <= gridIn.Columns.Count - 1; i++) 
        { 
         if (i > 0) 
         { 
          swOut.Write(", "); 
         } 

         value = dr.Cells[i].Value.ToString(); 

         //replace comma's with spaces 
         value = value.Replace(',', ' '); 
         //replace embedded newlines with spaces 
         value = value.Replace(Environment.NewLine, ""); 
         swOut.Write(value); 

        } 
        swOut.Close(); 

       } 
      } 
     } 
    } 

感謝您的幫助和意見對這個

+0

您正在爲每個DataGridViewRow創建一個新的csv文件。你故意這樣做嗎? – Roman

+0

是的,爲了使所有的行都有csv文件的名字... – ThisDude

+1

空行是因爲if語句。 'if(j> 0){swOut.WriteLine(); }'。這只是在第一個文件以外的每個文件的頂部寫一個空行。 – Roman

回答

1

你在談論將在每個文件的頂部,除了你的第一個CSV文件中的空行。刪除

if (j > 0) 
{ 
    swOut.WriteLine(); 
} 

從您的代碼中將不會再有任何空白行在您的文件的頂部。

要回答你的第二個問題:使用Timer。只需從工具箱中拖動它或者以編程方式添加它:

Timer timer1 = new Timer(); 
timer1.Interval = 1; // interval property is in milliseconds. use 1 for 1ms, 1000 for 1 second etc. 
timer1.Tick += timer1_Tick; 
timer1.Enabled = true; 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    // disable timer to avoid getting triggered while executing method 
    timer1.Enabled = false; 

    // run your method 
    writeCSV2(gridIn, outputFil); 

    // reenable the timer 
    timer1.Enabled = true; 
} 
+0

我刪除了,它現在工作正常,沒有空白行,但我需要這個writetocsv()函數運行每毫秒不停止... – ThisDude

+0

你可以添加一個計時器。我會編輯我的答案,請稍等一下。 – Roman

+0

好吧,我會期待那..謝謝。 – ThisDude