2016-05-10 108 views
-5
String[] values = File.ReadAllText(@"C:/Users/state.csv").Split(','); 
Console.WriteLine(values); 
Console.ReadLine(); 

它仅仅打印出:System.String []到控制台和程序是 运行很长一段时间解析在C#csv文件

+0

仅供参考:CSV格式化比简单地根据逗号分割线更加复杂。例如,如果某一行包含这些数据:“10,街道名称”,Smith,John“,Postcode”? – Ulric

+0

它包含只是0和1的 – Kira

回答

0

我不认为通过项目迭代是,如果你只是以前拆分是个好主意。我会改变你的代码,如下所示:

string valuesString = File.ReadAllText(@"C:/Users/state.csv"); 
Console.WriteLine(valuesString); 
String[] values = valuesString.Split(','); 

这样你就只能分割一次这个字符串。如果你想扩展控制台的缓冲区,你应该做:

Console.BufferHeight = Int16.MaxValue - 1; 
+0

感谢您的帮助,这似乎工作,虽然我只能查看控制台上的CSV文件的最后几行。是否有任何其他方式显示所有内容,而不是以下内容:foreach(var v in values) { Console.WriteLine(v); } Console.ReadLine(); – Kira

+0

你问你是否可以以某种方式扩展在控制台上显示的内容?意味着缓冲区?我编辑了回应。 –

+0

打开后需要关闭csv文件 – Kira

0

除非(非字符串)的ToString()方法类型被覆盖,它只会返回对象类型的名称,在这种情况下; “System.String []”。

要打印在array.Try所有值这样的:

String[] values = File.ReadAllText(@"C:/Users/state.csv").Split(','); 

foreach(var v in values) 
{ 
    Console.WriteLine(v); 
} 
Console.ReadLine(); 
+0

感谢您的帮助,它似乎工作,虽然只打印出最后几行数据 – Kira

0

使用任何环路的打印

string[] lines = System.IO.File.ReadAllLines(@"C:/Users/state.csv"); 
foreach (string line in lines) 
{ 
    string[] values = line.Split(','); 
    foreach(var item in values) 
     { 
     Console.WriteLine(item); 
     } 
} 
+0

感谢您的输入,但它只显示文件的最后几行 – Kira

+0

确定了它正在搜索,等待一分钟我正在更新我的答案 – Mostafiz

+0

看到我的更新它将逐行读取您的csv,然后它将所有行按逗号分隔,然后您可以迭代该数据并获取单独的数据点 – Mostafiz

0

.ToString()方法的阵列将返回“System.String []”。如果需要打印数组中的每个项目,请使用循环并打印每个项目。

或使用字符串加入像下面

Console.WriteLine(string.Join(Environment.NewLine, values));