Neste post aprenderemos como gerar um relatório que pode ser aberto no Excel.
A grande vantagem de usar o Excel como base é a flexibilidade para o usuário que é mais habituado com as ferramentas do Office e poderá adaptar, formatar e personalizar os dados extraídos conforme sua necessidade.
Vamos começar ?!
Aplicação
A parte de criar um projeto não será abordada neste artigo. Neste exemplo usarei uma aplicação Windows Forms e a linguagem C#, mas é claro que poderá ser utilizado em qualquer tipo de aplicação e linguagem fazendo algumas adaptações conforme sua escolha. Criaremos o projeto conforme a figura 1.

Figura 1 – Projeto criado.
1. Renomeie o Form1 para GerandoRelatorioEmExcel
2. Nomeie o botão gerar relatório para btnGerarRelatorio
Após criar o projeto, vamos para o banco de dados.
Banco de Dados
Criaremos uma tabela chamada clientes para gerarmos alguns dados no nosso relatório conforme a figura 2 e a listagem 1.

Figura 2 – Tabela clientes.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CLIENTES]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[CLIENTES](
[CODIGO] [int] IDENTITY(1,1) NOT NULL,
[NOME] [varchar](30) NULL,
[ENDERECO] [varchar](50) NULL,
[BAIRRO] [nchar](30) NULL,
[CIDADE] [nchar](20) NULL,
CONSTRAINT [PK_CLIENTES_1] PRIMARY KEY CLUSTERED
(
[CODIGO] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
END
Listagem 1 – Código para criação da tabela clientes.
Após a criação da tabela, incluiremos 2 registros conforme a listagem 2.
INSERT INTO CLIENTES (NOME,ENDERECO,BAIRRO,CIDADE) VALUES ('Fernanda','Rua das flores, 21','Jardins','São Paulo')
INSERT INTO CLIENTES (NOME,ENDERECO,BAIRRO,CIDADE) VALUES ('Marcos','Rua dos Cravos, 21','Jardins','São Paulo')
Listagem 2 – Inclusão de 2 registros na tabela clientes.
Após termos finalizado a parte de banco de dados, voltemos para a aplicação.
Aplicação
O formulário GerandoRelatorioEmExcel.cs ficará conforme a listagem 3.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
//namespace incluído para a classe StreamWriter
using System.IO;
namespace GerandoRelatorioEmExcel
{
public partial class GerandoRelatorioEmExcel : Form
{
public GerandoRelatorioEmExcel()
{
InitializeComponent();
}
// contém o código para gerar relatório
private void btnGerarRelatorio_Click(object sender, EventArgs e)
{
// Endereço onde salvar o arquivo + nome do arquivo + extensão .CSV
string endereco = "C:\\relatorio.csv";
using (StreamWriter writer = new StreamWriter(endereco, false, Encoding.GetEncoding("iso-8859-15")))
{
// Cabeçalho
writer.WriteLine("Código;Nome;Endereço;Cidade");
// Conexão com o banco de dados
string conexao = ConfigurationManager.ConnectionStrings["Projeto"].ConnectionString;
using (SqlConnection conn = new SqlConnection(conexao))
{
string query = "SELECT CODIGO,NOME,ENDERECO,BAIRRO,CIDADE FROM CLIENTES";
SqlCommand sqlComand = new SqlCommand(query, conn);
conn.Open();
using (IDataReader reader = sqlComand.ExecuteReader())
{
while (reader.Read())
{
// escrevendo os registros
writer.WriteLine(Convert.ToString(reader["CODIGO"]) + ";" + Convert.ToString(reader["NOME"]) + ";" + Convert.ToString(reader["ENDERECO"]) + ";" + Convert.ToString(reader["BAIRRO"]) + ";" + Convert.ToString(reader["CIDADE"]));
}
}
conn.Close();
}
}
// mensagem de arquivo gerado com sucesso.
MessageBox.Show("Relatório gerado com sucesso.", "ATENÇÃO", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
Listagem 3 – Código do formulário.cs.
Ao executar a aplicação o resultado do arquivo será gerado no endereço informado o ícone com o nome relatorio.csv e ao abri-lo será exibido o relatório conforme a figura 3.

Espero que tenham gostado.
Até o próximo post.
Comentar
Bem-vindo a
Codificando .Net
© 2010 Criado por Alexandre Tarifa
Powered by
.
Você precisa ser um membro de Codificando .Net para adicionar comentários!
Entrar em Codificando .Net