小编典典

使用 C# 读取 CSV 文件

all

我正在编写一个简单的导入应用程序,需要读取一个 CSV 文件,显示结果DataGrid并在另一个网格中显示 CSV
文件的损坏行。例如,在另一个网格中显示短于 5 个值的行。我正在尝试这样做:

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])
    });
}

但是在这种情况下很难对数组进行操作。有没有更好的方法来拆分值?


阅读 79

收藏
2022-07-13

共1个答案

小编典典

不要重新发明轮子。利用 .NET BCL 中已有的内容。

  • 添加对的引用Microsoft.VisualBasic(是的,它说 VisualBasic,但它在 C# 中也可以工作 - 请记住,最后它只是 IL)
  • 使用Microsoft.VisualBasic.FileIO.TextFieldParser该类解析 CSV 文件

这是示例代码:

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# 项目中非常适合我。

以下是更多链接/信息:

2022-07-13