2015-07-11 131 views
2

我试图导入含有2列(例如日期和价格)的CSV文件,并打印在控制台上。 但在我的控制台上,数字不按列排序。他们彼此相邻。如何在控制台中打印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; 
} 
+0

可能重复的[如何读取从csv文件数据转换成C#控制台应用](http://stackoverflow.com/questions/12582223/how-to-read-data-from- csv-file-into -c-sharp-console-application) –

+0

'foreach(var listA中的元素);'括号后面的分号结束语句(它有效)并且不循环到下一行S)。当然,你的意思是没有分号? 'foreach(listA中的var元素)' – OmegaMan

+0

你想要的输出是什么?你能告诉我们你想要的产品线是什么样的。 I.E.第1行= [1,2](换行)第2行= [2,3]等? – thinklarge

回答

0

不知道你的输出应该是什么样子我想创建一个类来存储我的结果,然后重写类的ToString函数。这样你可以将结果串起来。

注:我添加了两个方法做的ToString来告诉你,你可以用这个一点点工作,让你想在你的输出格式。如果您需要制表符或不能将其添加到字符串格式中。

编辑:我改变CsvRow为字符串,使他们可以把你的CSV值。我将ToString更改为更符合您的需求。只需从课堂上将它从CSV中实例化并打印到控制台即可。使用系统的 ; using 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

+0

感谢您的代码。我希望的输出是在C#控制台上逐行打印CVS文件的结果。输出如下 –

+0

示例:日期价格 –

+0

'行1:01/01/2015 200' –

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更多信息。

相关问题