gpt4 book ai didi

c# - 使用 C# 读取 CSV 文件

转载 作者:IT王子 更新时间:2023-10-29 03:31:22 26 4
gpt4 key购买 nike

我正在编写一个简单的导入应用程序,需要读取 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])
});
}

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

最佳答案

不要重新发明轮子。利用 .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# 项目中非常有用。

这里有一些更多的链接/信息:

关于c# - 使用 C# 读取 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3507498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com