Olá pessoal, neste artigo veremos a codificação de nosso projeto e o resultado final, gerando assim um arquivo XLS (que pode ser aberto no Excel) a partir de uma determinada tabela, indicada pelo usuário. Acompanhem:

Apenas ressaltando que este artigo foi feito já levando em conta que o leitor tem os conceitos básicos de ADO.NET para manipulação de dados entre a aplicação e o banco.

Sem mais delongas, vá ao sourcecode deste formulário e crie o método GerarXLS, como podemos ver abaixo (com comentários logo após o código):




private void GerarXLS()

        {

            using (StreamWriter sw = File.CreateText(txtArquivo.Text))

            {

                string conexao = String.Format("Server={0};Database={1};Trusted_Connection=True", txtServidor.Text, txtDatabase.Text);

               

                using (SqlConnection objConexao = new SqlConnection(conexao))

                {

                    string sqlCommand = "SELECT * FROM " + txtTabela.Text;

                    SqlCommand objCommand = new SqlCommand(sqlCommand, objConexao);

                    try

                    {

                        objConexao.Open();

                        SqlDataReader dr = objCommand.ExecuteReader();

                        while (dr.Read())

                        {

                            sw.WriteLine(dr["ProductName"].ToString() + "\t" + dr["UnitPrice"].ToString());

                        }

                        MessageBox.Show("Arquivo " + txtArquivo.Text + " Gerado com Sucesso!");

                    }

                    catch (Exception ex)

                    {

                        MessageBox.Show("Ocorreu o seguinte erro: " + ex.Message);

                    }

                    finally

                    {

                        objConexao.Close();

                    }

                }

            }

        }


- Começamos instanciando um objeto da classe StreamWriter, chamando seu método CreateText, para criar o arquivo XLS, passando como parâmetro o nome do arquivo, que será digitado pelo usuário o campo txtArquivo.Text.

- Depois criamos uma variável que recebe a string de conexão, montada por meio do String.Format, que recebe os parâmetros Server e Database, que serão respectivamente o nome do Servidor e o nome do Database, informado pelo usuário.

- Logo após instancio um objeto da classe SqlConnection, passando como parâmetro a variável criada anteriormente.

- Crio uma variável que recebe a instrução SELECT para consultar a tabela no banco, e concateno a instrução com o txtTabela.Text, onde será digitado pelo usuário o nome da tabela.

- Instancio um objeto da classe SqlCommand, passando como parâmetro a variável com a instrução SQL e o objeto de conexão com o banco.

- Abro um bloco try, onde abro a conexão com o banco, crio um objeto da classe SqlDataReader, que recebe o método ExecuteReader do objeto da classe SqlCommand.

- Uso um laço while para que, enquanto os dados forem lidos no banco, o objeto da classe StreamWriter, criado no início da codificação, use o método WriteLine para escrever os dados das colunas ProductName e UnitPrice (neste exemplo só serão usados estas 2 colunas, pertencentes à tabela Products).

- Exibo uma mensagem com a confirmação. Ao final, abro um bloco catch para capturar erros, e um bloco finally (que é chamado obrigatoriamente) para fechar a conexão com o banco.

Lembrando que este é um exemplo levando em conta que o usuário já conheça corretamente o nome do Servidor, do Database e da Tabela do banco de dados.

Agora crie o método AbrirXLS, note que o mesmo é bem simples, feito com poucas linhas de código:



private void AbrirXLS()

        {

            try

            {

                System.Diagnostics.Process process = new System.Diagnostics.Process();

                process.EnableRaisingEvents = true;

                process.StartInfo.FileName = txtArquivo.Text;

                process.Start();

            }

            catch (Exception ex)

            {

                MessageBox.Show("Ocorreu o seguinte erro: " + ex.Message);

            }

        }


- Apenas instanciei um objeto da classe Process, do namespace Diagnostics, responsável por abrir meu arquivo XLS.

Crie o evento click dos botões, dando dois cliques neles e chame os respectivos métodos:



private void btnAbrirXLS_Click(object sender, EventArgs e)

{

AbrirXLS();

}

       

private void btnGerarXLS_Click(object sender, EventArgs e)

{

GerarXLS();

}

Aperte F5 para rodar a aplicação, digite corretamente as informações do banco e clique no botão Gerar XLS, como mostra a Figura 01:

Figura 01 – Tela do Gerador de XLS com informações preenchidas.

Se tudo correu bem, é pra ser exibido um MessageBox, como o que mostra a Figura 02:

Figura 02 – Mensagem de Confirmação.

Finalizando, clique no botão para ver o resultado no Excel, como vemos na Figura 03:

Figura 03 – Arquivo Excel gerado após a execução do Gerador de XLS.

Assim podemos ter rapidamente os dados de uma determinada tabela em um arquivo do Excel.

Assim finalizo o artigo. Muito obrigado a todos!

Créditos à Luiz Maia, que fez as videoaulas e ao Portal Linha de Código, por onde pude baixá-las (mediante assinatura), estudá-las e posteriormente fazer este artigo.

Um abraço, e até o próximo artigo.

Wellington Balbo de Camargo

wellingtonbalbo@gmail.com