none
Importar conteúdo DataTable para um TXT . RRS feed

  • Pergunta

  • Pessoal boa tarde,

    Gostaria de saber como faço para importar conteudo de um DATATABLE para um arquivo TXT separado por ;

    Segue o codigo que fiz em um console para trazer o datatable preenchido.

     static void Main(string[] args)

            {

                //private void ExportarQuestionario()

                //   {

                String stringConn = "Data Source=CTR_MOBILI4\\SQLEXPRESS2008;Initial Catalog=MobileManager;Integrated Security=True";

                SqlConnection conexao = new SqlConnection(stringConn);            

                string query = "Select Nome,DataInicial,DataFinal,Sigla,UtilizaMotivoNaoPesquisa,LiberaItemForaIntervalo,HabilitaTecladoFisico from Questionario";

                SqlCommand cmd = new SqlCommand(query, conexao);

                cmd.CommandType = CommandType.Text;

                SqlDataAdapter da = new SqlDataAdapter();

                da.SelectCommand = cmd;

                DataTable dt = new DataTable("Questionario");

                try

                {

                     conexao.Open();

                     da.Fill(dt);                 

                }

                catch (Exception ex)

                {

                    throw ex;

                }

                finally

                {

                    conexao.Close();

                }

    caso o meu código esteja feio aceito sugestões, sou novo em programação e na empresa que trabalho alguns sites são bloqueados e por isso fica dificil de pesquisar e só tem eu de programador é um grande desafil para mim.

    Obrigado.

     

    terça-feira, 10 de agosto de 2010 20:55

Respostas

  • Joao,

     

    Te ajudo sim... Segue o exemplo completo:

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;
    
    namespace ConsoleApplication1
    {
      class Program
      {
        public static void Main(string[] args)
        {
          string stringConexao = "Data Source=CTR_MOBILI4\\SQLEXPRESS2008;Initial Catalog=MobileManager;Integrated Security=True";
    
          string query = "Select Nome,DataInicial,DataFinal,Sigla,UtilizaMotivoNaoPesquisa,LiberaItemForaIntervalo,HabilitaTecladoFisico from Questionario";
    
          string caminhoArquivo = @"C:\arquivo.txt";
    
          Program p = new Program();
          
          //executa a query e cria preenche um datatable
          var tabela = p.ObterDados(stringConexao, query);
    
          //passa os dados do datatable para o arquivo txt separados por ";"
          p.CriarArquivoDeTexto(tabela, caminhoArquivo);
    
        }
    
        public DataTable ObterDados(string stringConexao, string query)
        {
          SqlConnection conexao = new SqlConnection(stringConexao);
    
          SqlCommand comando = new SqlCommand(query, conexao);
          comando.CommandType = CommandType.Text;
    
          SqlDataAdapter da = new SqlDataAdapter();
          da.SelectCommand = comando;
    
          DataTable tabela = new DataTable();
    
          try
          {
            conexao.Open();
            da.Fill(tabela);
          }
          catch (Exception ex)
          {
            throw ex;
          }
          finally
          {
            conexao.Close();
          }
    
          return tabela;
        }
    
        public void CriarArquivoDeTexto(DataTable tabela, string caminhoArquivo)
        {
          int i = 0;
          StreamWriter sw = null;
    
          try
          {
            sw = new StreamWriter(caminhoArquivo, false);
    
            for (i = 0; i < tabela.Columns.Count - 1; i++)
            {
              sw.Write(tabela.Columns[i].ColumnName + ";");
            }
    
            sw.Write(tabela.Columns[i].ColumnName);
            sw.WriteLine();
    
            foreach (DataRow row in tabela.Rows)
            {
              object[] array = row.ItemArray;
    
              for (i = 0; i < array.Length - 1; i++)
              {
                sw.Write(array[i].ToString() + ";");
              }
    
              sw.Write(array[i].ToString());
              sw.WriteLine();
            }
    
            sw.Close();
          }
          catch (Exception ex)
          {
            throw ex;
          }
        }
      }
    }
    
    

     

    Espero ter ajudado...

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me

    Se for útil, por favor marque ;)
    • Sugerido como Resposta RicardoAlves quarta-feira, 11 de agosto de 2010 14:35
    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:53
    quarta-feira, 11 de agosto de 2010 03:39
  • Bom dia Ricardo,

    muitissimo obrigado pela ajuda funcionou perfeiramente.

    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:54
    quarta-feira, 11 de agosto de 2010 14:40
  • Bom dia Ricardo,

    muitissimo obrigado pela ajuda funcionou perfeiramente.


    Podes marcar como respondido por favor?
    Just Be Humble Malange!
    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:54
    quarta-feira, 11 de agosto de 2010 14:42
    Moderador
  • Isso Joao...

     

    Por favor, marque meu post do código como resposta, assim a solução fica visível para outras pessoas da comunidade.

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me

    Se for útil, por favor marque ;)
    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:53
    quarta-feira, 11 de agosto de 2010 16:08

Todas as Respostas

  • Joao,

     

    Seu código está bacana...

     

    Você pode fazer assim:

          filePath = @"C:\arquivo.txt";
    						
    			int i = 0;
          StreamWriter sw = null;
    
          try
          {
            
            sw = new StreamWriter(filePath, false);
    
            
            for (i = 0; i < dt.Columns.Count - 1; i++)
            {
    
              sw.Write(dt.Columns[i].ColumnName + ";");
    
            }
            sw.Write(dt.Columns[i].ColumnName);
            sw.WriteLine();
    
           
            foreach (DataRow row in dt.Rows)
            {
              object[] array = row.ItemArray;
    
              for (i = 0; i < array.Length - 1; i++)
              {
                sw.Write(array[i].ToString() + ";");
              }
              sw.Write(array[i].ToString());
              sw.WriteLine();
    
            }
    
            sw.Close();
          }
    
          catch (Exception ex)
          {
            MessageBox.Show("Invalid Operation : \n" + ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
          }
    

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me

    Se for útil, por favor marque ;)
    • Sugerido como Resposta RicardoAlves terça-feira, 10 de agosto de 2010 21:14
    terça-feira, 10 de agosto de 2010 21:13
  • Joao,

     

    Te ajudo sim... Segue o exemplo completo:

    using System;
    using System.Data;
    using System.Data.SqlClient;
    using System.IO;
    
    namespace ConsoleApplication1
    {
      class Program
      {
        public static void Main(string[] args)
        {
          string stringConexao = "Data Source=CTR_MOBILI4\\SQLEXPRESS2008;Initial Catalog=MobileManager;Integrated Security=True";
    
          string query = "Select Nome,DataInicial,DataFinal,Sigla,UtilizaMotivoNaoPesquisa,LiberaItemForaIntervalo,HabilitaTecladoFisico from Questionario";
    
          string caminhoArquivo = @"C:\arquivo.txt";
    
          Program p = new Program();
          
          //executa a query e cria preenche um datatable
          var tabela = p.ObterDados(stringConexao, query);
    
          //passa os dados do datatable para o arquivo txt separados por ";"
          p.CriarArquivoDeTexto(tabela, caminhoArquivo);
    
        }
    
        public DataTable ObterDados(string stringConexao, string query)
        {
          SqlConnection conexao = new SqlConnection(stringConexao);
    
          SqlCommand comando = new SqlCommand(query, conexao);
          comando.CommandType = CommandType.Text;
    
          SqlDataAdapter da = new SqlDataAdapter();
          da.SelectCommand = comando;
    
          DataTable tabela = new DataTable();
    
          try
          {
            conexao.Open();
            da.Fill(tabela);
          }
          catch (Exception ex)
          {
            throw ex;
          }
          finally
          {
            conexao.Close();
          }
    
          return tabela;
        }
    
        public void CriarArquivoDeTexto(DataTable tabela, string caminhoArquivo)
        {
          int i = 0;
          StreamWriter sw = null;
    
          try
          {
            sw = new StreamWriter(caminhoArquivo, false);
    
            for (i = 0; i < tabela.Columns.Count - 1; i++)
            {
              sw.Write(tabela.Columns[i].ColumnName + ";");
            }
    
            sw.Write(tabela.Columns[i].ColumnName);
            sw.WriteLine();
    
            foreach (DataRow row in tabela.Rows)
            {
              object[] array = row.ItemArray;
    
              for (i = 0; i < array.Length - 1; i++)
              {
                sw.Write(array[i].ToString() + ";");
              }
    
              sw.Write(array[i].ToString());
              sw.WriteLine();
            }
    
            sw.Close();
          }
          catch (Exception ex)
          {
            throw ex;
          }
        }
      }
    }
    
    

     

    Espero ter ajudado...

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me

    Se for útil, por favor marque ;)
    • Sugerido como Resposta RicardoAlves quarta-feira, 11 de agosto de 2010 14:35
    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:53
    quarta-feira, 11 de agosto de 2010 03:39
  • Bom dia Ricardo,

    muitissimo obrigado pela ajuda funcionou perfeiramente.

    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:54
    quarta-feira, 11 de agosto de 2010 14:40
  • Bom dia Ricardo,

    muitissimo obrigado pela ajuda funcionou perfeiramente.


    Podes marcar como respondido por favor?
    Just Be Humble Malange!
    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:54
    quarta-feira, 11 de agosto de 2010 14:42
    Moderador
  • Isso Joao...

     

    Por favor, marque meu post do código como resposta, assim a solução fica visível para outras pessoas da comunidade.

     

    Abraço,

     


    Ricardo Alves
    www.ricardoalves.me

    Se for útil, por favor marque ;)
    • Marcado como Resposta Justos quarta-feira, 11 de agosto de 2010 17:53
    quarta-feira, 11 de agosto de 2010 16:08