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 SallaiNeste 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.