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

本文关键字:空间 分割 dataGridView 填充 txt 文件 | 更新日期: 2023-09-27 17:51:05

我需要帮助:-(

我有一个文件.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  |              |

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

查看line-string[]Columns=line。拆分(','(;您尝试按逗号分隔行,但文件中没有逗号。试着按空格分隔。像

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

string[] Columns = line.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries)
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);
     }
 }
}

您在同一循环中添加了列和行。这是创建网格的错误方法。您应该在differents方法中添加行和列。上面的类将创建您的网格,然后向您的网格添加列和行。您可以用调用上述类的方法

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

然后,您的数据将正确添加列和行。你应该阅读越来越多的教程。因为这个问题是在Stackoverflow中提出的。你可以从.txt文件中读取这个Reading,然后将数据导出到DataGridView问题。我希望这个代码能帮助你。