在特定单词后将CSV数据提取到datagridview中

时间:2018-04-06 12:37:31

标签: c# asp.net csv datagridview

所以我有一个csv文件,我想将其数据提取到datagridview中,然后将其保存到数据库中。我只想保存“Tango N $ 10优惠券优惠10”后显示的数据(请参阅CSV文件提取以了解)我使用的是Windows应用程序C#。这是我到目前为止所尝试的内容。

try
            {
                var filePath = Path.GetFullPath(openAirtimeFile.FileName);


                foreach (var line in File.ReadAllLines(filePath))
                {
                    var thisLine = line;//.Trim();

                    if (thisLine.StartsWith("Tango", StringComparison.OrdinalIgnoreCase))
                    {
                        string[] data = File.ReadAllLines(filePath);
                        DataTable dt = new DataTable();
                        string[] col = data[0].Split(',');

                        foreach (string s in col)
                        {
                            dt.Columns.Add(s, typeof(string));
                        }

                        for (int i = 0; i < data.Length; i++)
                        {
                            string[] row = data[i].Split(',');
                            dt.Rows.Add(row);
                        }

                        dataGridView1.DataSource = dt;
                        dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
                    }

                }

CSV文件如下所示:CSV FILE

请帮忙。如何在“Tango N $ 10优惠券优惠10”后显示数据?

1 个答案:

答案 0 :(得分:1)

你做了File.ReadAllLines两次,所以你的内心if语句是没用的。也许尝试这样的事情。

免责声明,这只适用于假设Tango将在您的csv文件的开头

try
{
    var filePath = Path.GetFullPath(openAirtimeFile.FileName);

    bool FoundTango = false;
    foreach (var line in File.ReadAllLines(filePath))
    {
        var thisLine = line;//.Trim();

            if (thisLine.StartsWith("Tango", StringComparison.OrdinalIgnoreCase))
            {
                 FoundTango = true;
                 continue; //Tango has been found, skip to next iteration
            }

            if (FoundTango)
            {                        
                DataTable dt = new DataTable();
                string[] col = line.Split(',');

                foreach (string s in col)
                {
                    dt.Columns.Add(s, typeof(string));
                }

                for (int i = 0; i < data.Length; i++)
                {
                    string[] row = line.Split(',');
                    dt.Rows.Add(row);
                }

                dataGridView1.DataSource = dt;
                dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
            }

      }