我正在编写一个简单的导入应用程序,需要读取一个 CSV 文件,显示结果DataGrid并在另一个网格中显示 CSV 文件的损坏行。例如,在另一个网格中显示短于 5 个值的行。我正在尝试这样做:
DataGrid
StreamReader sr = new StreamReader(FilePath); importingData = new Account(); string line; string[] row = new string [5]; while ((line = sr.ReadLine()) != null) { row = line.Split(','); importingData.Add(new Transaction { Date = DateTime.Parse(row[0]), Reference = row[1], Description = row[2], Amount = decimal.Parse(row[3]), Category = (Category)Enum.Parse(typeof(Category), row[4]) }); }
但是在这种情况下很难对数组进行操作。有没有更好的方法来拆分值?
不要重新发明轮子。利用 .NET BCL 中已有的内容。
Microsoft.VisualBasic
Microsoft.VisualBasic.FileIO.TextFieldParser
这是示例代码:
using (TextFieldParser parser = new TextFieldParser(@"c:\temp\test.csv")) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(","); while (!parser.EndOfData) { //Processing row string[] fields = parser.ReadFields(); foreach (string field in fields) { //TODO: Process field } } }
它在我的 C# 项目中非常适合我。
以下是更多链接/信息: