Desenvolvimento - C#

Windows Forms – Gerando relatório que pode ser aberto no Excel

Neste artigo aprenderemos como gerar um relatório que pode ser aberto no Excel.

por Fernanda Sallai



Neste artigo 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 2 – 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 artigo.

Fernanda Sallai

Fernanda Sallai - Bacharel em Sistemas de Informação na FICS - Faculdades Integradas Campos Salles, reside em São Paulo - SP, atua no desenvolvimento de aplicações Web / Windows Forms e escreve periodicamente em seu blog www.fernandasallai.com.