控制台应用程序输出到.csv文件

时间:2013-10-31 21:46:53

标签: c# csv

我正在尝试制作一个能够显示数字的程序:

    1, 10   +30
    2, 40     (the scale goes up in this pattern by adding 20 to the last number added)
    3, 90   +50
    4, 160
    5, 250  +70

到目前为止,我有这段代码:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.IO;

 namespace Myloop
 {
      class Program
      {
          static void Main(string[] args)
          {
              FileStream filestream = new FileStream("loopdata.csv", FileMode.Create);
              var streamwriter = new StreamWriter(filestream);
              streamwriter.AutoFlush = true;
              Console.SetOut(streamwriter);
              Console.SetError(streamwriter);

               int forloop;
               for (forloop = 1; forloop < 21; forloop++)
                    Console.WriteLine(forloop);

               Console.ReadLine();

          }
      }
 }

这显示了数字1 - 20的第一个序列,但是有人可以给我任何指导如何在控制台应用程序中执行它旁边的其他序列吗?我如何将这些输出到.csv文件,因为我到目前为止的信息没有出现在.csv文件中。

3 个答案:

答案 0 :(得分:4)

将控制台输出流式传输到文件

FileStream filestream = new FileStream("loopdata.csv", FileMode.Create);
var streamwriter = new StreamWriter(filestream);
streamwriter.AutoFlush = true;
Console.SetOut(streamwriter);
Console.SetError(streamwriter);

答案 1 :(得分:2)

如果您查看数字,您会发现两个数字之间的差异可以使用以下公式计算:

valueInSecondColumn = 20 * (valueInFirstColumn + 1) - 10;

应用这些知识,您可以制定如下代码:

List<string> data = new List<string>();
int calculatedValue = 10;

for (int i = 1; i <= 20; i++)
{
    data.Add(string.Format("{0}, {1}", i, calculatedValue));
    calculatedValue += 20 * (i + 1) - 10;
}

for (int i = 0; i < data.Count; i++)
{
    Console.WriteLine(data[i]);
}

File.WriteAllLines(@"data.txt", data.ToArray());

答案 2 :(得分:0)

一个相当难看的实现,完全未经测试......

int col3 = 30;
bool col3set = true;

for( int col1 = 1; col1 <=20; col1++ )
{
    int col2 = col1*col1*10;

    Console.WriteLine(col1 + "," + col2 + " +" + (col3set ? col3.ToString() : ""));

    col3set = !col3set; //flip setting col3 so it's on for every odd row
    col3 += 20;
}