Lendo a partir do arquivo .txt, exportando dados para o DataGridView
Eu sei que esta é uma pergunta risível, mas Deus, eu passei todo o meu último dia batendo com a minha cabeça e isso simplesmente não vai funcionar! O maldito professor nem mencionou nada sobre a importação de dados para o DataGridView!
Eu tenho uma tarefa de casa do Windows Forms C #: eu tenho que ler dados de um.txt
(usuários) arquivar e colá-lo em umDataGridView tabela em c # Microsoft Visual Studio 2012. Os dados nousers.txt
arquivo é algo parecido com os 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
Ignore os nomes das etiquetas (ID, Nome, Sobrenome ...), eu os escrevi apenas para maior clareza, o arquivo real tem apenas os dados brutos do usuário.
Agora, eu criei uma classe anteriormenteUsers
, que possui estes campos:
e, em seguida, criou um DataGridView (usersDataGridView
) e importou os campos da classeUsers
nisso.
OK, algoritmicamente esta é uma tarefa fácil, não é?
Minha ideia era fazer o seguinte: ler o conteúdo do arquivo com umStreamReader
, salvando cada linha em uma string e dividindo a string em partes usando\t
como um delimitador comString.Split
.
No entanto, uma vez que eu tenho essas linhas divididas ... bem, eu basicamente não tenho idéia de como importá-los para o DataGridView (eu "sei" que deve ser como umDataSource
mas ... a interface do Visual Studio 2012 parece muito "complicada" para eu deixar-me descobrir como posso apontar uma string ou qualquer tipo de dado que seja como um DataSource).
Minhas lamentáveis tentativas me levaram ao seguinte:
Tentativa 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;
}
Tentativa 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;
}
No entanto, eu continuo recebendo algum erro de besteira como
O tamanho do array de entrada é maior que o
Desde que eu literalmente não tenho experiência comDataGridView
Eu acho que tenho alguns erros terríveis no nível algorítmico, certo ?!
Por favor, qualquer um me ajude! Eu li, copiei, colei, depilei e depurei de 20 edições diferentes sobre um tópico similar e ainda estou no nada!
Qual é oapropriado maneira de ler dados de um.txt
arquivo, em seguida, colá-lo para um DataGridView?
Qualquer ajuda ou respostas são profundamente apreciadas !!