我设置了datagridview
元素和一些识别特征作为列标题。
Col 1 Col 2 Col 3 4 5 6 7 ...
Sample , Symbol, Symbol Color, Na, K, Mg, Mn...
我目前可以加载CSV
或text tab delimited
个文件,但格式必须与datagridview匹配。有没有办法以随机顺序加载带有CSV
的{{1}}元素数据,然后将它们放在您想要的列中。
目前,csv的格式必须与column headers
:
datagridview
是否有可能,如果数据的顺序不同,则将其排序为现有Na, K, Mg, Mn....
88, 5, 6, 16...
56, 7, 33, 12...
的格式:
datagridview
有时导入文件中可能缺少列,没关系。我已经想出了如何隐藏空数据的列。
答案 0 :(得分:-1)
我建议使用像FileHelper这样的文件库来执行操作。它是免费的和开源的,有一些很棒的东西,如阅读csv
或任何格式化的数据文件,异步读取数据,定义实体的column
顺序。
修改强>
nullable
以获取更多信息http://www.filehelpers.net/example/MissingValues/MissingValuesNullable/ ColumnOrder
属性定义列顺序答案 1 :(得分:-1)
这是一种非常简单的方法。
首先创建一个这样的类;
private class MyColumns
{
public string Na { get; set; }
public string K { get; set; }
public string Mg { get; set; }
public string Mn { get; set; }
}
然后你可以像这样解析你的csv。
var allLines = File.ReadAllLines(@"C:\kosalaw\myfile.csv"); //read all lines from the csv file
MyColumns[] AllColumns = new MyColumns[allLines.Count() -1]; //create an array of MyColumns class
var colHeaders = allLines[0].Split(new[]{"\",\""},StringSplitOptions.None).ToList(); // Identify columns headers
for (int index = 1; index < allLines.Length; index++)//loop through the lines. We skip first line as it is the column header
{
var line = allLines[index];
var lineColumns = line.Split(new[] { "\",\"" }, StringSplitOptions.None); //split each line in to columns
AllColumns[index - 1] = new MyColumns //now use column header to identify the exact column.
{
K = lineColumns[colHeaders.IndexOf("K")],
Mg = lineColumns[colHeaders.IndexOf("Mg")],
Mn = lineColumns[colHeaders.IndexOf("Mn")],
Na = lineColumns[colHeaders.IndexOf("Na")]
};
}