如何在控制台中打印CSV文件?

时间:2015-07-11 15:29:07

标签: c# csv

我尝试导入包含2列(例如日期和价格)的CSV文件,然后在控制台上打印。 但是在我的控制台上,数字不按列排序。他们是一个接一个。

第一个问题:如何在控制台上正确打印?

第二个问题:我可以组合这两个数组,创建矩阵并在控制台上打印矩阵吗?它更容易吗?

这是我的代码:

using system.IO;
var reader=new StreamReader(File.OpenRead(@"filename.csv");
list<string> listA=new list<string>();
list<string> listB=new list<string>();
while (!Reader.EndofStream)
{ 
     var Line=reader.ReadLine();
     var valuesline.split(';');  
     listA.Add(values[0]);
     listB.Add(values[1]);
}
console.WriteLine("Column1:"); 
foreah (var Element in listA)
{
    console.write(Element);
    console.WriteLine("Column2:"); 
}   
foreah (var Element in listB); 
{
    console.write(Element);
    string[] S= listA.toArray;
    string[] o=listB.toArray; 
}

2 个答案:

答案 0 :(得分:1)

这听起来像是格式化问题。

Console.WriteLine借用string.Format以允许文本说明。 Format允许用户定位项目并提供填充。您想要的是专门填充的列。

以下是一行中三列的示例,请注意数字0,1,2,它们将索引到规范之后的数据中。该索引值旁边是以下数字-15,它允许填充15个空格以使数据适合每个列:

Console.WriteLine("{0,-15} {1,-15} {2,-15}", "Alpha", "Beta", 12);
Console.WriteLine("{0,-15} {1,-15} {2,-15}", "More Text", "B", 122000);

输出:

Alpha           Beta            12             
More Text       B               122000 

有关详细信息,请参阅String Formatting

答案 1 :(得分:0)

在不知道输出应该是什么样的情况下,我会创建一个类来存储我的结果,然后重写那个类ToString函数。这样您就可以将结果串起来。

注意:我添加了两种方法来执行ToString,以向您展示您可以稍微使用它来获得您在输出中所需的格式。如果您需要标签或诸如此类的东西,可以将其添加到字符串格式中。

编辑:我将CsvRow更改为字符串,以便他们可以获取您的Csv值。我将ToString更改为更符合您的需求。只需让类从CSV中实例化它并将其打印到控制台。     使用系统;     使用System.Collections.Generic;

public class CsvRow
{
    public CsvRow()
    {
    }

    public CsvRow(string a, string b)
    {
        A = a;
        B = b;
    }
    public string A {get; set;}
    public string B {get; set;}

    public string ToString(int rowNumber)
    {
        return String.Format("Row{0}: {1} {2}", rowNumber, A, B);
    }

}

public class Program
{
    public static void Main()
    {
        var results = new List<CsvRow>();
        results.Add(new CsvRow(DateTime.Now.ToString(), "200"));
        results.Add(new CsvRow(DateTime.Now.ToString(), "300"));            

        var i = 0;
        foreach (var result in results)
        {
            Console.WriteLine(result.ToString(i));
            i++;
        }       
    }
}

Link to DotFiddle I used