2015-07-11 73 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更多信息。