如何在C#中从文件.txt中填充dataGridView的分割空间

时间:2015-05-28 08:03:21

标签: c#

我需要帮助: - )

我有一个file.txt,内容如下:

00001    JhonKey     023301923
00002    Hercules    023039910

我想通过datatable将此文件加载到datagridview,结果应该保存在如下的数据网格中:

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++;
            }
        }

但结果与预期不符。看起来不对,第一栏中的所有内容都显示出来,如下所示:

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

2 个答案:

答案 0 :(得分:0)

看看行字符串[] Columns = line.Split(','); 您尝试用逗号分隔行,但文件中没有逗号。尝试按空间划分。 喜欢

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

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

答案 1 :(得分: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);
     }

 }

}

您在同一循环中添加了颜色和行。这是创建网格的错误方法。您应该在不同的方法中添加行和颜色。然后类将创建您的网格,然后将coloumn,rows添加到您的网格中。您可以使用以下方法调用类的方法:

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

然后您的数据将正确添加颜色和行。你应该阅读越来越多的教程。因为在Stackoverflow中询问了这个问题。您可以阅读此Reading from .txt file, then exporting data to DataGridView问题。我希望这段代码可以帮助你。