none
dificuldade em transformar em arquivo .txt c# RRS feed

  • Pergunta

  • pessoal criei uma lista no c# e nesse codigo ela ja esta preenchida, mas estou tendo dificuldade em criar essa lista num novo arquivo, no caso, um arquivo .txt... tenho que transformar essa lista que peguei do banco de dados num arquivo .txt

    o que eu estou fazendo de errado? desconsiderem os "*" no codigo, tive que censurar algumas coisas

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace exportacaoArquivo
    {
        public partial class exportarArquivos : Form
        {
            public exportarArquivos()
            {
                InitializeComponent();
            }
            private void exportarDB_Click(object sender, EventArgs e)
            {
                var listaAtributosDB = new List<atributosDB>();
                //conecta o programa ao banco de dados
                string conexaoString =
                    "Data Source=VXSQL1; " +
                    "Database=Atlas_Homolog;" +
                    "Persist Security Info=True;" +
                    "User ID=******;" +
                    "Password=******";
                SqlConnection conexaoSql = new SqlConnection(conexaoString);
                //instrucao do sql
                string sql = "SELECT TOP 10 ME.DESCRICAO as DESCRICAO_MAILING, B.DESCRICAO_BASE, BC.DESCRICAO as DESCRICAO_BASE_CALLFLEX," +
                             " ME.DATA_EXPORTACAO, ME.QTD_TELEFONES, ME.QTD_CLIENTES, ME.TEMPO_EXPORTACAO FROM MAILING_EXPORTACAO ME WITH(NOLOCK)" +
                             " INNER JOIN BASE_BANCO_DADOS B WITH(NOLOCK) ON B.COD_BASE = ME.ID_BASE_COBSYSTEMS" +
                             " INNER JOIN BASE_BANCO_DADOS_CALLFLEX BC WITH(NOLOCK) ON BC.ID = ME.ID_BASE_CALLFLEX" +
                             " WHERE ME.DATA_EXPORTACAO BETWEEN '" + dataInicio.Text + "' AND '" + dataFim.Text + "' ;";
                SqlCommand cmd = new SqlCommand(sql, conexaoSql);
                try
                {
                    //abre a conexao com o banco de dados
                    conexaoSql.Open();
                    SqlDataReader leitor = cmd.ExecuteReader();
                    while (leitor.Read())
                    {
                        atributosDB obj = new atributosDB();
                        obj.DESCRICAO_MAILING = leitor["DESCRICAO_MAILING"].ToString();
                        obj.DESCRICAO_BASE = leitor["DESCRICAO_BASE"].ToString();
                        obj.DESCRICAO_BASE_CALLFLEX = leitor["DESCRICAO_BASE_CALLFLEX"].ToString();
                        obj.DATA_EXPORTACAO = Convert.ToDateTime(leitor["DATA_EXPORTACAO"].ToString());
                        obj.QTD_TELEFONES = Convert.ToInt32(leitor["QTD_TELEFONES"].ToString());
                        obj.QTD_CLIENTES = Convert.ToInt32(leitor["QTD_CLIENTES"].ToString());
                        obj.TEMPO_EXPORTACAO = leitor["TEMPO_EXPORTACAO"].ToString();
                        listaAtributosDB.Add(obj);
                    }
                    //chama a funcao salvar em arquivo .txt
                    salvaArquivoTexto(listaAtributosDB);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro ao executar o comando SQL:" + ex.Message);
                    throw;
                }
            }

            //funcao que salva o arquivo .txt
            public void salvaArquivoTexto(List<atributosDB> listaAtributosDB)
            {
                string local = localArquivo.Text;
                StreamWriter arquivo = new StreamWriter(local, true, Encoding.Default);
                foreach (var lista in listaAtributosDB)
                {
                    arquivo.Write(listaAtributosDB);
                }
                arquivo.Close();
                MessageBox.Show("Exportação Efetivada.");
            }
        }
    }

    quinta-feira, 13 de junho de 2019 18:48

Respostas

  • Olá, Flávio!

    Experimente alterar o final do seu código para ficar assim:

    public void salvaArquivoTexto(List<atributosDB> listaAtributosDB)
    {
        string local = localArquivo.Text;
        StreamWriter arquivo = new StreamWriter(local, true, Encoding.Default);
        foreach (var lista in listaAtributosDB)
        {
    	string linha = string.Format("{0} | {1} | {2}", lista.DESCRICAO_MAILING, lista.DATA_EXPORTACAO, lista.DATA_EXPORTACAO);
            arquivo.WriteLine(linha);
        }
        arquivo.Close();
        MessageBox.Show("Exportação Efetivada.");
    }

    A cada iteração no foreach, um item do tipo atributosDB é selecionado da listaAtributosDB. No código acima eu  selecionei algumas propriedades do item e formatei em uma linha, salvando-a no arquivo logo em seguida. Você pode adaptar para ficar da melhor maneira para atender sua necessidade.

    Att, Wallace


    “First do it, then do it right, then do it better.”

    • Sugerido como Resposta IgorFKModerator sexta-feira, 14 de junho de 2019 12:14
    • Marcado como Resposta FLAVIOWENDT sexta-feira, 14 de junho de 2019 17:12
    quinta-feira, 13 de junho de 2019 22:34

Todas as Respostas

  • Olá, Flávio!

    Experimente alterar o final do seu código para ficar assim:

    public void salvaArquivoTexto(List<atributosDB> listaAtributosDB)
    {
        string local = localArquivo.Text;
        StreamWriter arquivo = new StreamWriter(local, true, Encoding.Default);
        foreach (var lista in listaAtributosDB)
        {
    	string linha = string.Format("{0} | {1} | {2}", lista.DESCRICAO_MAILING, lista.DATA_EXPORTACAO, lista.DATA_EXPORTACAO);
            arquivo.WriteLine(linha);
        }
        arquivo.Close();
        MessageBox.Show("Exportação Efetivada.");
    }

    A cada iteração no foreach, um item do tipo atributosDB é selecionado da listaAtributosDB. No código acima eu  selecionei algumas propriedades do item e formatei em uma linha, salvando-a no arquivo logo em seguida. Você pode adaptar para ficar da melhor maneira para atender sua necessidade.

    Att, Wallace


    “First do it, then do it right, then do it better.”

    • Sugerido como Resposta IgorFKModerator sexta-feira, 14 de junho de 2019 12:14
    • Marcado como Resposta FLAVIOWENDT sexta-feira, 14 de junho de 2019 17:12
    quinta-feira, 13 de junho de 2019 22:34
  • Obrigado amigo. peguei esse codigo e dei uma ajeitava para dar certo no meui programa. obrigado
    sexta-feira, 14 de junho de 2019 17:12