Czytanie z pliku .txt, a następnie eksportowanie danych do DataGridView
Wiem, że to śmieszne pytanie, ale Boże, spędziłem cały ostatni dzień, waląc nim w głowę i to po prostu nie zadziała! Cholerny nauczyciel nawet nie wspominał o importowaniu danych do DataGridView!
Mam zadanie domowe z C # Windows Forms: muszę czytać dane z.txt
(użytkownicy) plik i wklej go doDataGridView tabela w C # Microsoft Visual Studio 2012. Dane wusers.txt
plik jest podobny do tego z ogranicznikami 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
Zignoruj nazwy etykiet (ID, Imię, Nazwisko ...), napisałem je tylko dla jasności, prawdziwy plik zawiera tylko surowe dane użytkownika.
Wcześniej stworzyłem klasęUsers
, który ma następujące pola:
a następnie utworzył DataGridView (usersDataGridView
) i zaimportował pola z klasyUsers
w tym.
OK, algorytmicznie jest to łatwe zadanie, prawda?
Mój pomysł był następujący: czytanie zawartości pliku za pomocąStreamReader
, zapisywanie każdej linii do łańcucha, a następnie dzielenie łańcucha na części za pomocą\t
jako ogranicznik zString.Split
.
Jednak gdy już podzielę te linie ... cóż, w zasadzie nie mam pojęcia, jak zaimportować je do DataGridView („wiem”, że powinno to byćDataSource
ale ... interfejs użytkownika Visual Studio 2012 wydaje się być zbyt „skomplikowany”, abym mógł wymyślić, w jaki sposób mogę wskazać ciąg lub jakikolwiek cholerny typ danych, który jest źródłem danych).
Moje żałosne próby doprowadziły mnie do następujących:
Próba 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;
}
Próba 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;
}
Jednak wciąż dostaję jakiś gówniany błąd
Rozmiar tablicy wejściowej jest większy niż cokolwiek innego
Ponieważ nie mam dosłownie żadnego doświadczeniaDataGridView
Myślę, że mam kilka okropnych błędów na poziomie algorytmicznym, prawda ?!
Proszę, ktokolwiek, pomóż mi! Czytałem, kopiowałem, wklejałem, kompilowałem i debugowałem z 20 różnych problemów na podobny temat i wciąż jestem nigdzie!
Co jestwłaściwy sposób odczytywania danych z a.txt
plik, a następnie wklejenie go do DataGridView?
Wszelka pomoc lub odpowiedzi są bardzo mile widziane!