Leyendo desde un archivo .txt, luego exportando datos a DataGridView
Sé que esta es una pregunta risible, pero Dios, ¡me he pasado todo el último día golpeándome la cabeza con eso y simplemente no funcionará! ¡El maldito profesor ni siquiera mencionó nada sobre la importación de datos a DataGridView!
Tengo una tarea de C # Formularios de Windows: Tengo que leer datos de un.txt
(usuarios) archivar y pegarlo en unaDataGridView tabla en C # Microsoft Visual Studio 2012. Los datos en elusers.txt
archivo es algo así con delimitadores 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
Ignorar los nombres de las etiquetas (ID, Nombre, Apellido ...), los escribí solo para mayor claridad, el archivo real solo contiene los datos del usuario en bruto.
Ahora, he creado previamente una claseUsers
, que tiene estos campos:
y luego creó un DataGridView (usersDataGridView
) e importó los campos de la claseUsers
en eso.
OK, algorítmicamente esta es una tarea algo fácil, ¿no es así?
Mi idea era hacer lo siguiente: leer el contenido del archivo con unaStreamReader
, guardando cada línea en una cadena, luego dividiendo la cadena en partes usando\t
como un delimitador conString.Split
.
Sin embargo, una vez que dividí esas líneas ... bueno, básicamente no tengo idea de cómo importarlas en el DataGridView (sé que debería ser como unDataSource
pero ... la interfaz de usuario de Visual Studio 2012 me parece demasiado "complicada" para dejarme entender cómo puedo apuntar una cadena o cualquier tipo de datos, como DataSource).
Mis lamentables intentos me llevaron a lo siguiente:
Intento 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;
}
Intento 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;
}
Sin embargo, sigo recibiendo un error de mierda como
El tamaño de la matriz de entrada es más grande que el que sea
Ya que literalmente no tengo experiencia conDataGridView
Supongo que tengo algunos errores terribles a nivel algorítmico, ¿verdad?
Por favor, cualquiera, ayúdame! He leído, copiado, pegado, compilado y depurado de como 20 temas diferentes sobre temas similares y todavía no estoy en ninguna parte.
Cual es elapropiado forma de leer los datos de una.txt
archivo, y luego pegarlo en un DataGridView?
Cualquier ayuda o respuesta son muy apreciadas !!