2013-08-24 107 views
0

試圖實現用一些結構化數據讀取csv文件(該文件用於我的程序提醒 - 以下一種方式構建的文件中的數據:日期,名稱,時間從,時間到描述)。目前我想讀取文件中的所有數據,並將其放入一些字符串數組中,其中每個元素 - 來自文件的一行。 做了什麼如何讀取字符串數組中的* .csv文件

寫一些代碼,即創建讀取和打開文件的流。 但目前我只能閱讀一行。或一行中的所有文件。 如何知道文件中有多少行?或者如何讀取文件中的所有行,其中每個元素 - 文件中的一行。

代碼

FileStream fs = new FileStream(FilePath, FileMode.Open, 
       FileAccess.Read, FileShare.None); 
     StreamReader sr = new StreamReader(fs); 

     string lines = sr.ReadLine(); 
     //temp veiw result 
     viewTextBox.Text = lines; //read only one first line in file 
     sr.Close(); 

或嘗試讀取所有行

 string []line = File.ReadAllLines(FilePath); //read all lines in File 
     //temp check 
     for (int i=0; i<line.Length;i++){ 
      viewTextBox.Text += line[i]; // in this case all data stored in one lines 
     } 

我需要這個數組數據,因爲下一個動作 - 搜索這個數組中的一些數據,並顯示在表格。

回答

1

而不是重新發明輪子,我寧願使用一個衆所周知和測試庫:

「CSV文件分析器 C#類讀寫CSV文件多行字段的支持,自定義。分隔符和引號字符,選擇如何空行的處理 - 設計的行爲在Excel處理CSV文件的方式很多 - 多行字段的支持 - 能夠定製線多空處理 - 能力自定義分隔符和引號字符。「

http://csvfile.codeplex.com/

+1

我建議帶着奧斯卡建議的圖書館,一旦你知道它的內在運作,推出適合您的特定需求的自己的產品。 – ZeroPhase

+0

是的,當然我可以使用已經發明的東西,但我目前只是studieng,所以我不想做複製粘貼 - 我想了解原則,並嘗試它,但無論如何 - 謝謝 – gbk

+0

好吧,我雖然這是一個專業的需要。但是,我沒有清楚地看到你的問題。 – Oscar

1

如果你只是想看到一個簡單的解決方案,你怎麼可以這樣做:

IEnumerable<string[]> lineFields = File.ReadAllLines(FilePath).Select(line => line.Split(',')); 

,那麼你可以通過索引來訪問列:

string cellValue = lineFields[lineIndex][columnIndex]; 

這億韓元不會處理使用引號的csv文件,以便在數據中使用逗號,因此您需要編寫一個用於拆分引用字符串的例程。

相關問題