none
Relatórios em MVC RRS feed

  • Pergunta

  • Bom dia

    Estou em uma fase do meu projeto que vou precisar desenvolver relatórios gerenciais.

    Eu pesquisei e encontrei várias ferramentas para fazer isso, mas queria saber sobre a experiência de quem ja desenvolveu relatórios em MVC.

    Eu vi na internet que me chamaram a atenção o Crystal Reports, o Report View e pessoas falando para fazer em HTML.

    O Report View ja tenho experiência desenvolvendo em desktop, e o Crystal Reports eu usei na época do Visual Basic 6.

    Qual a melhor alternativa  e quais as vantagens e desvantagens da ferramenta?

    Obrigado pelo FeedBack!


    Paulo Marcelo Dalbosco

    sábado, 2 de março de 2013 13:30

Respostas

Todas as Respostas

  • Veja com seu cliente se não seria interessante relatórios em Excel (xlsx), a maioria gosta. Gerentes são viciados em Excel. ClosedXML e Aspose Cells são opções que conheço. Não imagine só relatórios do tipo pura tabela, é fácil criar relatórios complexos em Excel pois você pode criar o template no próprio Excel e tratar a parte dinâmica no seu código e o gerente vai poder "viajar" podendo por exemplo adicionar mais gráficos que vier na cabeça dele na hora de tomada de decisões. Já para documentos que realmente precisarem ser impressos, com cabeçalho e rodapé, procura algo para PDF como o PDFSharp (nunca usei mas já foi mencionado neste forum) ou Aspose PDF.

    Aqui já rolou um tópico sobre o assunto: http://social.msdn.microsoft.com/Forums/pt-PT/mvcpt/thread/7065843e-769e-482d-bf93-e1ef120608b3



    sábado, 2 de março de 2013 19:31
  • Crystal Reports não funciona muito bem em MVC, tem que fazer 545 coisas pra funcionar. Sai mais em conta você fazer uma página aspx só para os relatórios, utilizando os componentes do asp.net webforms.

    Agora, se você for desenvolver relatórios em Excel, eu conheço três formas: via interoperabilidade, html salvo com extensão .xls e OpenXML SDK.

    Via interoperabilidade eu não recomendo, porque é lerdo e necessita ter ms office instalado no servidor. Html salvo com estão .xls é o mais fácil de todos, você monta um table com css embutido e salva .xls, mas tem um problema, nenhuma fórmula funciona. OpenXML SDK seria a melhor forma, através dela você pode montar planilhas e gráficos, com fórmulas e tudo mais, e é bem rápido para gerar. Único problema é que ela é meio confusa pra se trabalhar no início, as classes não são fáceis de usar. Entretanto um amigo já resolveu essa parada pra nós, criando uma biblioteca que manipula o OpenXML, e é gratuita, http://spreadsheetlight.com/sample-code/


    Ao infinito e além!

    segunda-feira, 4 de março de 2013 12:02
  • Eu não pretendo usar o Excel, pelo menos por enquanto não tem esta possibilidade na análise.

    Se eu quiser relatórios estáticos, sem o cliente poder alterar.

    Qual seria a melhor ferramenta?

    Alguém teria um exemplo legal?

    Agradeço desde ja.


    Paulo Marcelo Dalbosco

    segunda-feira, 4 de março de 2013 14:11
  • Relatórios Estáticos sem o cliente poder alterar, não entendo muito bem o que quer dizer... porque digamos que faça um Crystal Report, o relatório será estático, apenas na web, uma vez que ele exportou já será "alterável". Se alguém vai mostrar o relatório pra alguém, essa pessoa provavelmente vai exportar para algum formato, ou imprimir, podendo fazer o que quiser com o relatório...

    Mas pelo o que eu entendi da sua situação, Crystal Reports seria uma boa mesmo. Só que ao invés de você criar uma View no MVC, crie uma página webForms e utilize os componentes, não tem problema nenhum em fazer isso, e é transparente para o cliente.


    Ao infinito e além!

    terça-feira, 5 de março de 2013 11:38
  • Minha opinião sobre isto, é você gerar os relatórios em PDF ou em HTML normal mesmo.

    Sobre criar em PDF, existe também o iTextSharp. Porém algo que você terá que se acostumar que terá que fazer tudo na mão.
    Dá uma olhada aqui neste link: http://sourceforge.net/projects/itextsharp/
    Abaixo exemplo simples:
    using (System.IO.FileStream fs = new FileStream("C:\\" + "First PDF document.pdf", FileMode.Create))
    {
        Document document = new Document(PageSize.A4, 25, 25, 30, 30);
        PdfWriter writer1 = PdfWriter.GetInstance(document, fs);
    
        // Add meta information to the document
        document.AddAuthor("Micke Blomquist");
        document.AddCreator("Sample application using iTestSharp");
        document.AddKeywords("PDF tutorial education");
        document.AddSubject("Document subject - Describing the steps creating a PDF document");
        document.AddTitle("The document title - PDF creation using iTextSharp");
    
        // Open the document to enable you to write to the document
        document.Open();
    
        // Add a simple and wellknown phrase to the document
        for (int x = 0; x != 100; x++)
        {
            document.Add(new Paragraph("Paragraph - Hello World!"));
        }
              
    
        // Close the document
        document.Close();
        writer1.Close();
        fs.Close();
    }
    Atenciosamente

    Marlon Tiedt
    www.sesmt.com.br

    terça-feira, 5 de março de 2013 15:05
  • Eu não pretendo usar o Excel, pelo menos por enquanto não tem esta possibilidade na análise.

    Se eu quiser relatórios estáticos, sem o cliente poder alterar.

    Qual seria a melhor ferramenta?

    Alguém teria um exemplo legal?

    Agradeço desde ja.


    Paulo Marcelo Dalbosco

    Se nao pode Excel, entao vá de Pdf, esse iTextSharp que o Marlon falou parece ser a opcao mais madura e PdfSharp mais simples de usar, entre as opcoes free. E Marlon lembrou bem tambem, html as vezes é suficiente.

    • Editado rs.developer terça-feira, 5 de março de 2013 16:13
    terça-feira, 5 de março de 2013 15:43
  • Obrigado pelo FeedBack Pessoal.

    Fábio, estático eu quiz dizer para não gerar em uma planilha, mas em um documento que não dê para alterar. A alternativa de criar views em WebForms parece ser bacana!

    O que achei mais legal foi o PDF, mas esta classe esta em C#, e este projeto que estou trabalhando é em VB.NET.
    Vou dar mais uma procurada sobre gerar relatórios em PDF, e ver se tem alguma solução para VB.

    Obrigado pelo FeedBack!


    Paulo Marcelo Dalbosco

    quarta-feira, 6 de março de 2013 12:35
  • Olá Paulo M Dalbosco,

    Já trabalhei muito com relatórios com ASP.NET MVC, Report Viewer, Crystal Reports, iTextSharp, Rotativa, etc....

    Analisando todas que já utilizei, acho que o Report Viewer é simples e muito versátil! Ele é um recurso do ASP.NET, logo, não funciona apenas com WebForms mas com MVC tbm! ;)

    Você pode utilizar sua engine para gerar seus relatórios, e por fim você apenas retorna um FileResult ou algo do tipo! não precisa nada disso de criar páginas webforms e utilizar o relatório por lá. :P

    Abs

    Rafael Zaccanini

    rafaelzaccanini.net

    • Marcado como Resposta Paulo M Dalbosco quinta-feira, 7 de março de 2013 13:00
    quarta-feira, 6 de março de 2013 21:26

  • O que achei mais legal foi o PDF, mas esta classe esta em C#, e este projeto que estou trabalhando é em VB.NET.
    Vou dar mais uma procurada sobre gerar relatórios em PDF, e ver se tem alguma solução para VB.

    É, com PDF você terá total liberdade. Sobre o VB aqui tem exemplos tanto do iTextSharp quanto do PDFSharp:

    http://cjhaas.com/blog/2011/09/03/1-vb-net-itextsharp-tutorial-hello-world/

    http://www.pdfsharp.net/wiki/HelloWorld-sample-VB.ashx

    Não uso nenhum dos dois, mas dá uma avaliada.


    • Editado rs.developer quinta-feira, 7 de março de 2013 01:35
    • Marcado como Resposta Paulo M Dalbosco quinta-feira, 7 de março de 2013 13:00
    quinta-feira, 7 de março de 2013 01:34
  • Obrigado pessoal

    Como ja estamos acostumados a usar o Report Viewer em aplicação Desktop, estamos tendenciosos a utilizar ele no projeto. Particularmente estou gostando bastante da idéia do PDF e vou estudar ela.

    Obrigado a todos!


    Paulo Marcelo Dalbosco

    quinta-feira, 7 de março de 2013 12:59
  • Rafael, teria algum exemplo prático utilizando o Report em MVC?

    Obrigado!


    Paulo Marcelo Dalbosco

    quinta-feira, 7 de março de 2013 13:00
  • Paulo,

    Veja:

    Criando Relatórios Report Viewer em Aplicações ASP.NET MVC – Parte 1 (Renderização pelo Controller)
    http://rafaelzaccanini.net/2011/04/05/criando-relatorios-report-viewer-em-aplicacoes-asp-net-mvc-parte-1-renderizacao-pelo-controller/

    Criando Relatórios Report Viewer em Aplicações ASP.NET MVC – Parte 2 (Criando um Sub-Relatório)
    http://rafaelzaccanini.net/2011/05/19/criando-relatorios-report-viewer-em-aplicacoes-asp-net-mvc-parte-2-criando-um-sub-relatorio/

    Abs


    quinta-feira, 7 de março de 2013 13:03
  • Obrigado Rafael

    Paulo Marcelo Dalbosco

    quinta-feira, 7 de março de 2013 13:44
  • Depois de pensar muito, eu resolvi desenvolver os relatórios do meu sistema diretamente em html. Essa se mostrou uma solução simples e rápida de desenvolver. Além disso, pelo browser o cliente tem a opção de imprimir ou exportar pra PDF, então, problema resolvido.

    Se precisar posto como faço isso aqui.

    segunda-feira, 11 de março de 2013 16:23
  • Amigo, veja esse tutorial...

    Mostra como gerar relatórios em MVC usando o Rotativa W7

    http://cleytonferrari.com/gerando-relatorios-em-pdf-com-rotativa-w7/


    Abraços


    -------------------- Leonardo Nascimento Cintra

    • Marcado como Resposta Paulo M Dalbosco segunda-feira, 8 de abril de 2013 14:00
    terça-feira, 2 de abril de 2013 17:50
  • Pessoal, 

    Uso o reportviewer desde seus primórdios em 2005, no entanto a partir da versão para o framework 4.5 com o IIS8 estou tendo dificuldades de encontrar provedores de hospedagem que permitam a execução do site asp.net em FullTrust.

    Para a geração de relatórios usando LocalMode o Componente requer FullTrust, no entanto os provedores de hospedagem estão restringindo a execução para Medium/Partial Trust e aí todos os relatórios do meu cliente pararam de funcionar. Não tenho o que fazer, terei que reescrevê-los em html.

    Request for the permission of type 'System.Security.Permissions.StrongNameIdentityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.


    Ebenezer

    quinta-feira, 24 de julho de 2014 12:33