2013-03-09 96 views
0

我寫了一個C#代碼來讀取csv文件中的數據。該數據在表格說:從dataGridView中讀取數據而不是C#中的csv文件#

2,3,4,5,6 
4,2,4,5,6 
4,5,6,3,2 
5,3,5,6,3 

代碼讀它是:

var lines = File.ReadLines("Data.csv"); 
var numbers = ProcessRawNumbers(lines); 

功能ProcessRawNumbers如下:

private static List<List<double>> ProcessRawNumbers(IEnumerable<string> lines) 
    { 
     var numbers = new List<List<double>>(); 
     /*System.Threading.Tasks.*/ 
     Parallel.ForEach(lines, line => 
     { 
      lock (numbers) 
      { 
       numbers.Add(ProcessLine(line)); 
      } 
     }); 
     return numbers; 
    } 

private static List<double> ProcessLine(string line) 
    { 
     var list = new List<double>(); 
     foreach (var s in line.Split(Separators, StringSplitOptions.RemoveEmptyEntries)) 
     { 
      double i; 
      if (Double.TryParse(s, out i)) 
      { 
       list.Add(i); 
      } 
     } 
     return list; 
    } 

我想這樣做與DataGridView。這怎麼能實現?

DataGridView我給輸入如下:

enter image description here

而且,是有可能有列數的變化動態?

+0

網格如何填充?它綁定到數據源嗎? – 2013-03-09 06:35:32

+0

@ MD.Unicorn,該列表是手動填充的。 – user1645333 2013-03-09 06:38:54

回答

0

DataGridView中輸入的數據存儲在其行和單元格中。要exctract數據,你必須在行和細胞手動循環:

public List<string[]> ExtractGridData(DataGridView grid) 
{ 
    int numCols = grid.Columns.Count; 
    List<string[]> list = new List<string[]>(); 
    foreach (DataGridViewRow row in grid.Rows) 
    { 
     if (row.IsNewRow) // skip the new row 
      continue; 
     string[] cellsData = new string[numCols]; 
     foreach (DataGridViewCell cell in row.Cells) 
      if (cell.Value != null) 
       cellsData[cell.ColumnIndex] = cell.Value.ToString(); 
     list.Add(cellsData); 
    } 

    return list; 
} 

如果要動態地更改列,您可以訪問網格的Columns財產。例如,要添加一列,你可以這樣寫:

dataGridView1.Columns.Add("NewColumn", "New Column"); 

還要注意,在方案中使用Parallel.ForEach沒有任何優勢,因爲你要處理的數據順序,並通過使用lock語句,你逼的順序處理。所以沒有平行的進程。

+0

:我們從哪裏得到「網格」變量?它作爲參數傳遞給ExtractGridData函數。 – user1645333 2013-03-09 08:23:42

+0

@ user1645333這是你的網格!您在表單中刪除的「DataGridView」。默認情況下它被命名爲'dataGridView1'。 – 2013-03-09 08:38:25

+0

在調用這個ExtractGridData()時,我們應該傳遞給它什麼參數? – user1645333 2013-03-09 08:45:05