使用C#将CSV文件导入List

我正在使用C#将CSV文件导入我的应用程序

目前我有一个1字段的CSV文件。 它工作得很好,但现在我想在同一个应用程序中添加一个3字段的CSV文件。

一旦数据存储到List中,我就将它绑定到我的DataGridView

这是我写的相关代码。 如果您发现任何不属于我的问题但可能有问题的问题,请随时大声说出来。 我总是希望学习和改进我的代码。

BindingList data = new BindingList(); private void importExcelFile() { TextFieldParser parser = new TextFieldParser(fileName); parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(","); while (!parser.EndOfData) { //Processing row string[] fields = parser.ReadFields(); foreach (string field in fields) { StringValue s = new StringValue(field); // Issue is here. It adds it to a single dimension array. What can I do to make it multi-dimension? data.Add(s); } } parser.Close(); } private void OnBackgroundWorkerDoWork(object sender, DoWorkEventArgs e) { importExcelFile(); } private void OnBackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { dataGridView1.DataSource = data; dataGridView1.Columns[1].Name = "URL"; dataGridView1.Columns[1].HeaderText = "URL"; dataGridView1.Columns[1].Width = 300; dataGridView1.Columns[1].ReadOnly = true; dataGridView1.AutoResizeColumns(); toolStripStatusLabel1.Text = dataGridView1.RowCount.ToString() + " Number Of Websites"; } 

 class StringValue { string day, time, url; public StringValue(string s) { _value = s; } public StringValue(string[] s) { day = s[0]; time = s[1]; url = s[2]; } public string Value { get { return _value; } set { _value = value; } } string _value; } 

我想我应该修改我的StringValue类来保存我从CSV文件导入的多个字段。 我不确定如何修改Value部分以返回我将其绑定到dataGridView时所需的数据

感谢您的意见和帮助/

为什么不把juste放到像这样的数据表?

 private DataTable GetDataTableFromCsv(string path) { DataTable dataTable = new DataTable(); String[] csv = File.ReadAllLines(path); foreach (string csvrow in csv) { var fields = csvrow.Split(','); // csv delimiter var row = dataTable.NewRow(); row.ItemArray = fields; dataTable.Rows.Add(row); } return dataTable; } 

之后,juste将数据表导入datagridview。

在您的实体(StringValue)中,您可以根据需要添加任意数量的属性,包含所需数量的值。

您可以通过将DataPropertyName列设置为要绑定的属性的名称来绑定dataGridView的每一列。

例如,您的实体有两个属性:

 class MyValues { public string FirstName {get;set;} public string LastName {get;set;} } 

您可以将此集合添加到yuur数据集合中,并将其绑定到网格。

您的网格可以配置为:

 dataGridView1.Columns[0].Name = "FirstName"; dataGridView1.Columns[0].HeaderText = "FirstName"; dataGridView1.Columns[0].DataPropertyName = "FirstName"; dataGridView1.Columns[1].Name = "LastName"; dataGridView1.Columns[1].HeaderText = "LastName"; dataGridView1.Columns[1].DataPropertyName = "LastName";