2013-03-09 61 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