从.txt文件读取,然后将数据导出到DataGridView

我知道这是一个可笑的问题,但是上帝,我花了整整一天的时间用它敲打它,它就行不通! 这该死的老师甚至没有提到任何关于将任何数据导入DataGridView的事情!

我有一个C#Windows Forms作业:我必须从.txt (用户)文件中读取数据并将其粘贴到C#Microsoft Visual Studio 2012中的DataGridView表中users.txt文件中的数据类似于TAB分隔符:

 ------------------------------------------------- ID Name Surname Telephone VIP Age Balance ------------------------------------------------- 0001 John Killer 1-500-300 0 13 2272 0002 Name Surname 1-500-200 0 27 225 0003 Martin King 1-500-400 1 41 1070 

忽略标签名称(ID,Name,Surname …),我只是为了清楚起见而编写它们,真实文件中只包含原始用户数据。

现在,我之前创建了一个类Users ,它包含以下字段:

  • ID
  • 名称
  • 电话
  • 要人
  • 买了物品
  • 价钱

然后创建一个DataGridView( usersDataGridView )并从其中的类Users中导入字段。

好的,从算法上说这是一件容易的事,不是吗?

我的想法是执行以下操作:使用StreamReader读取文件内容,将每行保存为字符串,然后使用\t作为String.Split的分隔符将字符串拆分为多个部分。

但是,一旦我将这些行拆分了……好吧,我基本上不知道如何将它们导入到DataGridView中(我知道它应该是一个DataSource但是…… Visual Studio 2012的UI看起来太复杂了) “让我弄清楚如何指出一个字符串或其他什么样的数据类型作为DataSource。”

我可怜的尝试让我得到以下结论:

尝试1:

 public void Test_1() { string filePath = string.Format("{0}/databases/{1}", AppDomain.CurrentDomain.BaseDirectory, "user_db.txt"); string[] textData = System.IO.File.ReadAllLines(filePath); string[] headers = textData[0].Split('\t'); DataTable dataTable1 = new DataTable(); foreach (string header in headers) dataTable1.Columns.Add(header, typeof(string), null); for (int i = 1; i < textData.Length; i++) dataTable1.Rows.Add(textData[i].Split('\t')); //Set the DataSource of DataGridView to the DataTable promotionsDataGridView.DataSource = dataTable1; } 

尝试2:

 public void ReadFromFile() { string delimeter = "\t"; string tableName = "BooksTable"; string fileName = string.Format("{0}/databases/{1}", AppDomain.CurrentDomain.BaseDirectory, "bigtest.sql"); DataSet dataset = new DataSet(); StreamReader sr = new StreamReader(fileName); dataset.Tables.Add(tableName); dataset.Tables[tableName].Columns.Add("InventoryID"); dataset.Tables[tableName].Columns.Add("Brand"); dataset.Tables[tableName].Columns.Add("Category"); dataset.Tables[tableName].Columns.Add("Description"); dataset.Tables[tableName].Columns.Add("Promotions"); dataset.Tables[tableName].Columns.Add("Quantity"); dataset.Tables[tableName].Columns.Add("Price"); string allData = sr.ReadToEnd(); string[] rows = allData.Split("\r".ToCharArray()); foreach (string r in rows) { string[] items = r.Split(delimeter.ToCharArray()); dataset.Tables[tableName].Rows.Add(items); } this.productsDataGridView.DataSource = dataset.Tables[0].DefaultView; } 

但是我不断得到一些废话错误

输入数组大小比什么都大

由于我几乎没有使用DataGridView经验,我想我在algorhitmic级别有一些可怕的错误,对吧?!

请有人帮助我! 我已经从类似主题的20个不同问题中阅读,复制,粘贴,编译和调试,我仍然无处可去!

.txt文件中读取数据然后将其粘贴到DataGridView的正确方法是什么?

任何帮助或答案都非常感谢!!

如果已经定义了User对象,则可以向其添加静态方法,该方法将数据加载到用户列表并将其绑定到网格视图。

 public class User { public string Id { get; set; } public string Name { get; set; } public string Surname { get; set; } public string Telephone { get; set; } public bool Vip { get; set; } public int Age { get; set; } public decimal Balance { get; set; } public static List LoadUserListFromFile(string path) { var users = new List(); foreach (var line in File.ReadAllLines(path)) { var columns = line.Split('\t'); users.Add(new User { Id = columns[0], Name = columns[1], Surname = columns[2], Telephone = columns[3], Vip = columns[4] == "1", Age = Convert.ToInt32(columns[5]), Balance = Convert.ToDecimal(columns[6]) }); } return users; } } 

然后,您只需将其加载到数据网格中:

 usersDataGridView.DataSource = User.LoadUserListFromFile("user_db.txt");