Mostrando postagens com marcador relatório. Mostrar todas as postagens
Mostrando postagens com marcador relatório. Mostrar todas as postagens

sexta-feira, 3 de maio de 2013

Relatório utilizando GridView x LINQ


Existem algumas formas de desenvolver relatórios utilizando ASP.Net.
  • Utilizado um grid para exibir as informações
  • Crystal reports: modelando um template com colunas, agrupamentos, sub grupos, etc.
  • Gráficos

No exemplo que vou demonstrar será utilizado o gridview.

No gridview é possível formatar as informações que serão exibidas através de css, criar um cabeçalho , rodapé e ordenação.

O Visual Studio já tem alguns templates pre definidos para montar um grid. Isso agiliza a desenvolvimento, caso você não entenda muito de css.

Na guia tools clique e arraste para tela o controle GridView. após feito isso clique no grid adicionado e vá até a guia propriedades.

altere a propriedade ID, no meu caso vou chamar de gdvCliente.

Por padrão a propriedade AutoGenerateColumns vem marcada como True. Essa propriedade irá criar o grid com todas as colunas do seu DataSource.

Agora vou definir um template, clique no grid e clique na seta que esta na lateral direita superior e clique em Auto Format. Como na imagem abaixo:


A janela abaixo irá aparecer e vou escolher o template Snowy Pine. 



Agora vamos ao código.

Eu inclui um arquivo do tipo LINQ to SQL, com o nome de Banco.dbml e arrastei para ele a tabela de clientes.
No arquivo Default.aspx.cs eu adicionei o seguinte código:

BancoDataContext bd = new BancoDataContext();
var resultado = from r in bd.Clientes orderby r.nome select { r.nome, r.email, r.telefone }; 
gdvCliente.DataSource = resultado;
gdvCliente.DataBind();

Basicamente fiz uma query selecionando todos os registros da tabela Cliente exibindo somente os campos “Nome”, “Email” e “Telefone”.

Informei que o DataSource do meu grid(“gdvCliente”) é o resultado dessa consulta.
E chamei o método DataBind(), que é responsável por carregar o grid com as informações do DataSource.

Veja o resultado:
Também é possível incluir alguns filtros, nesse exemplo vou adicionar os seguintes controles:
  • Label – titulo do filtro
  • TextBox – receberá o valor que fará o filtro – txtNome
  • Button – Executará o filtro - btnFiltrar

No evento onClick do botão Filtrar eu adicionei o seguinte código:



BancoDataContext bd = new BancoDataContext();
var resultado = from r in bd.Clientes where r.nome.Contains(txtNome.Text) orderby r.nome select new { r.nome, r.email, r.telefone };
gdvCliente.DataSource = resultado;
gdvCliente.DataBind();

Basicamente o código é o mesmo, a única diferença é a clausula where onde eu informei que o campo nome deve conter o valor filtrado.

Veja o resultado:




quarta-feira, 17 de abril de 2013

Gerando Excel - Básico


Criar um arquivo Excel através do C# parece ser um bicho de 7 cabeças. Mas não é.
Basta utilizar a dll da Microsoft chamada “Microsoft.Office.Interop.Excel”. Sua utilização é muito simples, basta entender como o Excel funciona.

O Excel se divide em 3 partes:
  • Workbook – Representa o arquivo Excel
  • Worksheet – Representa uma pasta de trabalho
  • Cell – Pode conter uma informação, texto números, etc.


Um Workbook  pode conter N pastas de trabalhos  e uma pasta de trabalho contem N informações.

Nesse exemplo eu vou demonstrar como criar um arquivo excel e preencher algumas células. 

using Microsoft.Office.Interop.Excel;
namespace ExemploConsole
{
    class Program
    {
        static void Main(string[] args)
        {

            Application excel = new Application();
            Workbook wb = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);

            ws.Name = "Nome da Pasta";
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    Microsoft.Office.Interop.Excel.Range ce = (ws.Cells[i + 1, j + 1] as Microsoft.Office.Interop.Excel.Range);
                    int linha = i + 1;
                    int coluna = j + 1;
                    ce.Value2 = "Valor: " + linha + " x " + coluna;
                }

            }
            wb.SaveAs("c:\\temp\\excelTeste.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            excel.Quit();

        }
    }
}




Como pode ser visto no código acima, eu criei um workbook (wb) e um worksheet (ws).  

Fiz dois loops para adicionar informações em 10 linhas e em 10 colunas e por fim, salvei o arquivo. 

Veja o resultado:



Esse exemplo é muito útil para quem deseja criar um relatório simples em Excel.