Codificando .Net

Aprendizado, companherismo, ensino e aperfeiçoamento constante

Fernanda Sallai

Windows Forms - Gerando relatório que poder ser aberto no Excel

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.

Tags: c#, excel, forms, windows

Comentar

Você precisa ser um membro de Codificando .Net para adicionar comentários!

Entrar em Codificando .Net

Fernanda Sallai Comentário de Fernanda Sallai em 21 fevereiro 2010 às 16:32
Oi Fúlvio,

Obrigada pelo comentário.

Até mais... Ah estou esperando seu artigo para revisar hein.
FULVIO CEZAR CANDUCCI DIAS Comentário de FULVIO CEZAR CANDUCCI DIAS em 21 fevereiro 2010 às 16:26
Oi Fernanda,,,,

Ficou sensacional.
Muito útil.

Parabéns
T+
Fernanda Sallai Comentário de Fernanda Sallai em 16 fevereiro 2010 às 14:11
Obrigada Anderson.
Anderson Bezerra Castro Sá Comentário de Anderson Bezerra Castro Sá em 16 fevereiro 2010 às 14:04
Excelente dica parabens!!
Fernanda Sallai Comentário de Fernanda Sallai em 16 fevereiro 2010 às 13:13
Obrigada Milton....
Milton Carvalhaes Filho Comentário de Milton Carvalhaes Filho em 16 fevereiro 2010 às 13:05
Legal, gostei do post. Parabens Fernanda :)
Fernanda Sallai Comentário de Fernanda Sallai em 16 fevereiro 2010 às 9:02
Obrigada Charles
Charles Ollavo Comentário de Charles Ollavo em 15 fevereiro 2010 às 22:43
muito bom o post...parabéns...

Patrocínios

Comunidade Daruma 

Revista Mundo .Net 


Editora O'Reilly 


© 2010   Criado por Alexandre Tarifa   Powered by .

Badges  |  Relatar um incidente  |  Termos de serviço

Entrar no bate-papo