使用C#导入CSV文件导入列表(Importing CSV file into a List usi

2019-08-31 19:34发布

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

目前,我有一个1场CSV文件。 它的工作很好,但现在我想补充一个3场CSV文件导入相同的应用程序。

一旦数据被存储到列表中,我将它绑定到我的DataGridView

这里是培训相关的代码,我已经写了。 如果您看到的是不是我的问题的一部分,但可能是一个问题的任何问题(一个或多个),请随时喊出来。 我总是在寻找学习和提高我的代码。

    BindingList<StringValue> data = new BindingList<StringValue>();

    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文件导入多个领域。 我不知道如何修改的价值一部分,当我把它绑定到我的dataGridView回到我所需要的数据

谢谢您的输入和帮助/

Answer 1:

为什么不探微把CSV到像这样一个DataTable?

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

之后中庸之道进口数据表到您的datagridview。



Answer 2:

在你的实体(的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";


文章来源: Importing CSV file into a List using C#