我尝试读取CSV文件并将数据保存到要导入数据库的对象中。 CSV文件包含以下信息:
Const WHITE = 16777215
Const GRAY = 14540253
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If Len(Trim(Me![Text61])) = 0 Then GoTo color_box
If (Me![LineNum] Mod 2) = 0 Then
Me![Text60].BackColor = GRAY
Me![bmnh].BackColor = GRAY
Me![c_val].BackColor = GRAY
Me![Text61].BackColor = GRAY
Else
Me![Text60].BackColor = WHITE
Me![c_val].BackColor = WHITE
Me![Text61].BackColor = WHITE
Me![bmnh].BackColor = WHITE
End If
exit_here:
Exit Sub
color_box:
Me![Text61].BackColor = GRAY
End Sub
我用这个文件阅读了文件:
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[]
上使用.Split(',')
。
我还想将信息输入对象
ReadLine()
我的问题是如何拆分数据并将其保存到对象?
答案 0 :(得分:3)
我的建议是使用CsvHelper或类似的项目。它可以完成许多读取CSV文件所需的操作,例如转义引号和处理不同类型的分隔符。
答案 1 :(得分:0)
也许我错过了什么,但我不确定为什么这对你不起作用:
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;
}
}
P.S。解析CSV文件可能比简单地分割逗号要复杂一些。如果你想阅读你自己的解析器的所有规则,维基百科有pretty good list个。
答案 2 :(得分:0)
您可以执行以下操作,这也会返回一个&#39;文件列表&#39;对象:
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;
}
这当然假设你有一个构造函数用于你的文件&#39;看起来像这样的类:
public files(string[] data)
{
product_name = data[0];
part_number = data[1];
quantity = data[2];
}
答案 3 :(得分:0)
您只能使用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();