none
PREENCHER UM DATA GRID ATRAVÉS DE UM TXT RRS feed

  • Pergunta

  • Bom dia Pessoal,

    Preciso preencher um data grid através de uma importação de um arquivo txt.

    

    Ao clicar em abrir ele vai carregar o arquivo com o seguinte formato:

    1,1084.235,954.819,99.180
    2,1084.181,954.352,99.186
    3,1083.715,954.401,99.189
    4,1083.769,954.867,99.183
    5,1083.974,954.618,99.185

    A cada "," seria a separação de cada coluna.

    segunda-feira, 8 de outubro de 2018 12:51

Respostas

  • Olá Leandro,

    Tente o seguinte código:

    private void PegarDadosArquivo(string path)
            {

                StreamReader srFicheiro = new StreamReader(path);

                try
                {

                    string linha = srFicheiro.ReadLine();
                    string[] dados;
                    int count = 0;

                    while (linha != null)
                    {

                        dados = linha.Split(',');
                        dataGridView1.Rows.Insert(count, dados);
                        linha = srFicheiro.ReadLine();
                        count++;
                    }
                }
                catch (IOException ex)
                {

                    MessageBox.Show(ex.Message.ToString());
                }
                finally
                {
                    srFicheiro.Close();
                }
            }

    Se te ajudou favor de marcar como resposta.

    • Sugerido como Resposta Timóteo Nkawa segunda-feira, 8 de outubro de 2018 13:51
    • Marcado como Resposta Leandro A. Martins segunda-feira, 8 de outubro de 2018 14:19
    segunda-feira, 8 de outubro de 2018 13:50

Todas as Respostas

  • Olá Leandro,

    Tente o seguinte código:

    private void PegarDadosArquivo(string path)
            {

                StreamReader srFicheiro = new StreamReader(path);

                try
                {

                    string linha = srFicheiro.ReadLine();
                    string[] dados;
                    int count = 0;

                    while (linha != null)
                    {

                        dados = linha.Split(',');
                        dataGridView1.Rows.Insert(count, dados);
                        linha = srFicheiro.ReadLine();
                        count++;
                    }
                }
                catch (IOException ex)
                {

                    MessageBox.Show(ex.Message.ToString());
                }
                finally
                {
                    srFicheiro.Close();
                }
            }

    Se te ajudou favor de marcar como resposta.

    • Sugerido como Resposta Timóteo Nkawa segunda-feira, 8 de outubro de 2018 13:51
    • Marcado como Resposta Leandro A. Martins segunda-feira, 8 de outubro de 2018 14:19
    segunda-feira, 8 de outubro de 2018 13:50
  • Obrigado Timóteo

    Me ajudou muito

    segunda-feira, 8 de outubro de 2018 14:24
  • Aproveitando o tópico Timoteo.

    Estou querendo fazer a seguinte ação.

    Percorrer os valores dessa lista e para cada linha ele vai executar um comando.

    Como eu faço para percorrer essa lista ?

    Tentando exemplificar seria isso:

    int ponto;
    double norte;
    double leste;
    double cota;
    
    Percorre linha
    {
    para cada linha mudaria o valor de norte, leste e cota
    
    }
    


    segunda-feira, 8 de outubro de 2018 14:56
  • Olá Leandro,

    Será que querre que fique assim?

    while (linha != null)
                    {

                        dados = linha.Split(',');
                        dataGridView1.Rows.Insert(count, dados);

                        ponto = (int.Parse(dados[0])) + 2;
                        norte = (int.Parse(dados[1])) * 3;//Precisará tirar os pontos nos valores, depende do teu sistema.
                        leste = (int.Parse(dados[2])) * 2;
                        cota = (int.Parse(dados[3])) * 4;

                        string novosValores = string.Format("O novos valores são: ponto = {0} norte = {1} leste = {2} cota = {3}", ponto, norte, leste, cota);
                        MessageBox.Show(novosValores);

                        linha = srFicheiro.ReadLine();
                        count++;
                    }

    Abraço!

    segunda-feira, 8 de outubro de 2018 16:04
  • Obrigado pela resposta Timóteo novamente.

    Na verdade não quero alterar os valores que serão importados do txt.

    Em um outro botão vai pegar os valores de cada linha e atribuir a aquelas variáveis que citei antes.

    Fazer um loop em cima disso.

    segunda-feira, 8 de outubro de 2018 16:25
  • Acabei resolvendo o meu problema da seguinte forma
    for (Int32 i = 0; i < count; i++)
                        {
                            ponto = dataGridView1.Rows[i].Cells[0].Value.ToString();
                            norte = Convert.ToDouble(dataGridView1.Rows[i].Cells[1].Value.ToString());
                            leste = Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value.ToString());
                            cota = Convert.ToDouble(dataGridView1.Rows[i].Cells[3].Value.ToString());
    
    }

    segunda-feira, 8 de outubro de 2018 20:06