如何在C#中将csv文件的不同行(数值)读取(保存)到不同的数组中

时间:2012-10-03 18:03:35

标签: c#

我是C#的新手,并尝试构建一种计算器应用程序,它将从csv文件中读取值,然后继续进行所需的操作。

计算器算法工作正常,但我需要从csv文件填充数组。我使用了StreamReader,但是它将所有值放在一个数组中:

FileStream aFile = new FileStream("d:\test.txt", FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(aFile);
                strLine = sr.ReadLine();
               while (strLine != null)
                {
                    strArray = strLine.Split(charArray);
                    for (int x = 1; x <= strArray.GetUpperBound(0); x++)
                    {
                        Console.WriteLine(strArray[x].Trim());

我需要将单独的行读入单独的数组,这些行可以是动态的(即csv文件可以有n行,这将需要n个数组)。计算器算法如下,工作正常。我只需要如何使用上面的代码将csv读入数组并在下面的代码中使用这些数组(下面的代码,虽然摘录,工作正常)。请帮忙。

for (int p = 0; p < n; p++)   
       { 
         for (int j = 0; j < t; j++)
            {
                sum[j] = w[p, j] * a[p, j];
                k[p] = k[p] + sum[j];
            }
        }
        double loa=0;
        for (int i = 0; i < n; i++)
        {
            loa1[i] = k[i] * v[i];
            loa += loa1[i];

2 个答案:

答案 0 :(得分:0)

TextFieldParser课程非常适合阅读CSV文件。

TextFieldParser parser = new TextFieldParser("filename.txt");
parser.Delimiters = new[] { "," };
while (!parser.EndOfData)
{
    string[] fields = parser.ReadFields();
    //process this line of fields, or store it for later processing
}

然后,您可以使用int.TryParsedouble.TryParse将相应的字符串转换为数字值。

答案 1 :(得分:0)

非常感谢您的评论和帮助 - 非常感谢。我能够使用以下方式单独读取行:

using (TextFieldParser fieldParser = new TextFieldParser(name)) "d:\\test1.txt"))
        {
          parts = fieldParser.ReadFields();

然后使用:

保持双数组中单独行的值
double[] array = Array.ConvertAll(parts, double.Parse);

然后我使用了一个计数器和EndOfData属性来管理定义单独数组的行开关:

counter++;
if (fieldParser.EndOfData)
                {

再次感谢。计算器现在正在运行,可在http://thaddeus-eze.com

处获得