Чтение из TXT-файла, затем экспорт данных в DataGridView

Я знаю, что это смешной вопрос, но Бог, я провел весь свой последний день, ударяя головой в него, и это просто не сработает! Проклятый учитель даже не упоминал об импорте каких-либо данных в DataGridView!

У меня есть домашнее задание на C # Windows Forms: мне нужно прочитать данные из файла .txt (users) и вставить его в таблицу DataGridView в C # Microsoft Visual Studio 2012. Данные в файле 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 …), я написал их только для ясности, у реального файла есть только сырые пользовательские данные.

Теперь я ранее создал class Users , который имеет следующие поля:

  • Я БЫ
  • название
  • Фамилия
  • телефон
  • VIP
  • Купленные предметы
  • Цена

а затем создал DataGridView ( usersDataGridView ) и импортировал поля из classа Users в нем.

Хорошо, алгоритмически это довольно простая задача, не так ли?

Моя идея заключалась в следующем: чтение содержимого файла с помощью StreamReader , сохранение каждой строки в строке, а затем разделение строки на части с использованием \t в качестве разделителя с String.Split .

Однако, как только я разделил эти строки … ну, я в принципе не знаю, как импортировать их в DataGridView (я «знаю», он должен быть как DataSource но … интерфейс Visual Studio 2012 кажется слишком «сложным» «для меня, чтобы я мог понять, как я могу указать строку или любой другой тип данных, такой как 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 я предполагаю, что у меня есть ужасные ошибки на уровне алгоритма, верно ?!

Пожалуйста, кто-нибудь, помогите мне! Я прочитал, скопировал, вставил, скомпилировал и отладил от 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");