分割CSV并保存到对象
本文关键字:对象 保存 CSV 分割 | 更新日期: 2023-09-27 18:03:01
我正在尝试读取CSV文件并将数据保存到要导入数据库的对象中。CSV文件包含以下信息:
Gas Sensor,GS-NO-001,2
Gas Sensor,GS-O2-002,2
Vig,VG-LR-001-FG-003,1
我读这个文件:
public static void CSVReader()
{
var reader = new StreamReader(File.OpenRead("C:''PO-02.csv"));
reader.ReadLine();
int counter = 0;
string line;
System.IO.StreamReader file = new System.IO.StreamReader("C:''PO-02.csv");
while ((line = file.ReadLine()) != null)
{
Console.WriteLine(line);
counter++;
}
file.Close();
}
但是我不能让.Split(',')
使用这种阅读方法来实际拆分数据。我试图使string[]
来保存数据,以及在ReadLine()
上使用.Split(',')
。
我还想将信息输入到对象
public class files
{
public string product_name { get; set; }
public string part_number { get; set; }
public string quantity { get; set; }
}
我的问题是如何分割数据并将其保存到对象?
我建议使用CsvHelper或类似的项目。它做了很多读取CSV文件所需的事情,比如转义引号和处理不同类型的分隔符。
也许我错过了什么,但我不确定为什么这对你不起作用:
public static List<string[]> CSVReader()
{
using (var reader = new StreamReader(File.OpenRead("C:''PO-02.csv"))
{
var csv = new List<string[]>();
reader.ReadLine();
int counter = 0;
string line;
using (StreamReader file = new StreamReader("C:''PO-02.csv"))
{
while ((line = file.ReadLine()) != null)
{
list.Add(line.Split(','))
counter++;
}
}
return list;
}
}
注:解析CSV文件可能比简单地用逗号分隔要复杂一些。如果您想为自己的解析器阅读所有规则,Wikipedia有一个很好的规则列表。
您可以执行以下操作,这也将返回给您一个'files'对象列表:
public static List<files> CSVReader()
{
var reader = new StreamReader(File.OpenRead("C:''PO-02.csv"));
reader.ReadLine();
int counter = 0;
string line;
System.IO.StreamReader file = new System.IO.StreamReader("C:''PO-02.csv");
// Create a list to hold your 'files' objects
List<files> items = new List<files>();
while ((line = file.ReadLine()) != null)
{
Console.WriteLine(line);
// Add a new 'files' object to your list by passing it the split csv line
string[] data = line.split(",");
items.Add(new files(data));
counter++;
}
file.Close();
return items;
}
这当然假设你有一个构造函数为你的'files'类,看起来像这样:
public files(string[] data)
{
product_name = data[0];
part_number = data[1];
quantity = data[2];
}
只能使用Linq。
var result = File.ReadLines("C:''PO-02.csv")
.Select(line => {
var chunk = line.Split(',');
return new files
{
product_name = chunk[0],
part_number = chunk[1],
quantity = chunk[2]
};
}).ToList();