2015-05-28 29 views
-5

我需要幫助:-)如何分割空間,從文件.TXT填寫的dataGridView在C#

我有內容的file.txt的象下面這樣:

00001 JhonKey  023301923 
00002 Hercules 023039910 

我希望加載這個文件datagridview的數據表通過和結果應保存在一個DataGrid象下面這樣:

COL1 | COL2  | COL3 
----------------------------------- 
00001 | JhonKey | 023301923 
00002 | Hercules | 023039910 

我想這樣的代碼:

using (StreamReader SR = new StreamReader(txtFileName)) 
     { 
      int row = 0; 
      string line; 
      while ((line = SR.ReadLine())!= null) 
      { 
       string[] Columns = line.Split(','); 
       dataGridView2.Rows.Add(); 
       for (int i = 0; i < Columns.Length; i++) 
       { 
        dataGridView2[i, row].Value = Columns[i]; 
       } 
       row++; 
      } 
     } 

但結果不符合預期。它看起來是錯誤的,一切都在第一列wirtten,如下所示:

COL1       | COL2  | COL3 
-------------------------------------------------------- 
00001 JhonKey 023301923 |    | 
00002 Hercules 023039910 |    | 
+0

你的意思是使用斷點? –

+0

偉大的作品,但我必須創建分割空間的空間曲調使用file.txt –

+0

看看我的答案 –

回答

0

看看行字符串[] Columns = line.Split(','); 您嘗試按逗號分割行,但文件中不包含逗號。嘗試按空格分割。 像

string[] Columns = line.Split(' '); 

或者

string[] Columns = line.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries) 
+0

偉大的作品,但我必須創建分割空間調整空間使用file.txt如下所示: string [] Columns = line.Split(''); –

0
using System.Data; 
using System.IO; 


public class FromYourFileToGrid 
{ 

public static DataTable DataTableFromYourTextFile(string directory, char splitter=',') 
{ 
    DataTable result; 

    string[] LineArray = File.ReadAllLines(directory); 

    result = FormDataTable(LineArray, splitter); 

    return result; 
} 


private static DataTable FormDataTable(string []LineArray, char splitter) 
{ 
    bool IsHeaderSet = false; 

    DataTable dt = new DataTable(); 

    AddColumnToTable(LineArray, splitter, ref dt); 

    AddRowToTable(LineArray, splitter, ref dt); 

    return dt; 
} 


private static void AddRowToTable(string []valueCollection, char splitter, ref DataTable dt) 
{ 

    for (int i = 1; i < valueCollection.Length; i++) 
    { 
    string[] values = valueCollection[i].Split(splitter); 

    DataRow dr = dt.NewRow(); 

    for (int j = 0; j < values.Length; j++) 
    { 
     dr[j] = values[j]; 
    } 

    dt.Rows.Add(dr); 
    } 
} 


private static void AddColumnToTable(string []columnCollection, char splitter, ref DataTable dt) 
{ 
    string[] columns = columnCollection[0].Split(splitter); 

    foreach (string columnName in columns) 
    { 
    DataColumn dc = new DataColumn(columnName, typeof(string)); 
    dt.Columns.Add(dc); 
    } 

} 

} 

你在同一個環路中加入coloumns和行。這是創建網格的錯誤方式。你應該添加行和coloumns在型動物method.Above類將創建您的網格,然後添加coloumn,行你grid.You可以撥打上面的類的方法有:

dataGridView1.DataSource =  FromYourFileToGrid.DataTableFromYourTextFile("file.txt", '|'); 

然後你DATAS將被添加coloumns和正確的行。你應該閱讀越來越多的教程。因爲這個問題在Stackoverflow中被問到。你可以閱讀這個Reading from .txt file, then exporting data to DataGridView問題。我希望這段代碼能幫助你。

+0

非常感謝你Mert Ozogul的幫助:-) –