如何将数据从CSV读取存储到变量中

时间:2014-12-02 01:32:25

标签: c# csv

我编写了一个从csv文件中读取数据的程序。

读入数据的代码将在下面复制。

但是,我想做以下事情:

(1)将值存储到变量中,以便可以在Selenium Automation脚本中使用它们。

一些注意事项:

我认为需要做的是在While循环中包含一个Split方法,它将逗号(",")视为每个值之间的分隔。但是,我不确定如何正确实现这一点。此外,由于我是编程新手,如果我能得到一个关于如何做到这一点的代码示例,那将是最有益的。

我还需要跳过第一行,因为它包含标识数据的标题。

最后,因为csv的每一行代表(1)测试场景的数据,我希望循环执行直到读取csv的最后一行。

// Read data from CSV file
using (CsvFileReader reader = new CsvFileReader("C:\\Data\\Test_Resources\\Data_Sheets\\Adactin\\Data_Input.csv"))
{
    CsvRow row = new CsvRow();
    while (reader.ReadRow(row))
    {
        foreach (string s in row)
        {
            Console.Write(s);
            Console.Write(" ");
        }
        Console.WriteLine();
     }
}

1 个答案:

答案 0 :(得分:2)

如果我理解你的任务正确,这是你可以完成它的众多方法之一: 1.创建一个类,用于存储一个测试的所有必需数据:

    class TestInfo
    {
        static char[] delimiters = new char[] { ',' };
        static int mRequiredCount = -1;

        public string TestID { get; private set; }
        public int Variable1 { get; private set; }
        public float Variable2 { get; private set; }
        //......other variables that are required to be specified for the test

        public TestInfo(string lineFromCSVfile)
        {
            string[] segments = lineFromCSVfile.Split(delimiters);
            if(mRequiredCount < 0)
                mRequiredCount = this.GetType().GetProperties().Length;
            if (segments.Length < mRequiredCount)
                throw new Exception(string.Format("Cannot extract required test data from CSV line {0}", lineFromCSVfile));
            else
            {// NB! exception InvalidStringFormat can happen below during parsing
                TestID = segments[0].Trim();
                Variable1 = int.Parse(segments[1].Trim());
                Variable2 = float.Parse(segments[2].Trim());
                //........... parse other variables here ............
            }
        }
    }
  1. using阻止之前:

        int linesCount = 0;
        List<TestInfo> myTests = new List<TestInfo>();
    
  2. using块中的循环内部:

            if (linesCount > 0)
            {
                linesCount++;
                try
                {
                    myTests.Add(new TestInfo(row));
                }
                catch (Exception ex)
                {
                    // Create a log record or/and do something else to report the corrupted CSV line
                }
            }
            linesCount++;
    
  3. 因此,在解析所有CSV行之后,您将获得一个包含自动测试数据的对象列表。