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:
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