Relatorios em php e java
Relatorios em php e java
Pode ser feito através do ireport. Onde há o site para pesquisas www.ireport.com.br para baixar plugins de integração para o netbeans, instalador do relatorio
Neste artigo, vou mostrar como gerar um relatório usando o iReport, no qual as informações virão de um banco de dados, e usaremos o Hibernate para conexão. Em uma aplicação, é comum que o cliente queira um relatório. Para gerá-lo, vamos usar o iReport e o JasperReport. No “mundo real”, gera-se um relatório a partir de uma base de dados, que na maioria das vezes é um banco de dados.
Vamos trabalhar com a hipótese de que você já tenha um BD e uma tabela de onde deseja extrair a informação.
Este é meu banco:
Requisitos:
Você precisa fazer o download do iReport. Até o momento, a versão mais recente é a 3.7.6.
Configuração:
- Faça o download do iReport;
- Copie os .jars que estão na pasta ext do iReport para o projeto Java, mas, se for JEE, adicione à pasta lib. Não se esqueça do .jar para o BD, caso os dados do relatório venham de um banco de dados, que é o mais real e comum.
Commons-beanutils:
- commons-collections
- commons-digester
- commons-logging
- groovy-all
- iText
- poi
- jasperreports
Veja, em poucas palavras e de uma forma direta, o que é iReport e o JasperReport:
Report: é uma espécie de IDE para criação do layout do seu relatório. Com ele, você pode definir qual a aparência do seu relatório e o que vai conter. E é exatamente aqui que fazemos a conexão com o banco de dados, e, consequentemente, com as tabelas. É aqui, também, onde informamos quais colunas de uma tabela vão aparecer no relatório. Ele gera um arquivo .jrxml, que será lido por JasperReport.
JasperReport: É uma API que permite nossa classe Java estabelecer uma “conversa” com o nosso layout-relatório. Isso é útil para que sua aplicação Java gere relatórios em um único ambiente. O usuário não percebe que foi gerado por algo “fora” do Java (isso para aqueles que sabem o que é Java).
Como acontece na prática:
O desenvolvedor cria o layout baseado no propósito do relatório e põe a logomarca da empresa e os dados que devem aparecer. Não precisa ser um webdesigner para desenhar o layout e é no iReport que falamos de onde vem a informação: se será de um BD, ou não.
No JasperReport, apenas setamos onde está o layout .jrxml do iReport, e em seguida informamos para qual tipo vamos exportar o relatório: PDF, XML, HTML, ou TEXT. Um arquivo será gerado em um local específico, ou, se for um JEE, será carregado pelo browser.
Note que os nomes das variáveis da classe devem estar iguais aos nomes dos campos (fields) no layout do relatório.
Passo a passo para gerar o relatório:
Parte 1: vá para o iReport e crie um arquivo, seguindo as instruções do assistente, que são bem simples:
Na parte de banco
de dados, basta informar os dados relacionados à conexão do banco:
Feito isso, o
relatório aparecerá na tela e, então, podemos editá-lo. Observe que ele já
aparece montando com os dados do BD, ou seja, com os nomes das colunas e nos
seus devidos lugares. Isso só acontece nas versões mais recentes do iReport.
Parte 2: Agora, precisamos criar um projeto no Eclipse. Este será um Java
Project.
Passos:
- Crie o Bean (os nomes entre o bean e os fields no layout
devem ser os mesmos); - Crie uma conexão
com o banco de dados (usamos o Hibernate); - Crie um método List na classe DAO, usando HQL com a query
que deseja; - Importe para o
projeto do Eclipse o arquivo jrxml; - Crie a classe
main com exportando o relatório.
Abaixo veja a estrutura
do meu projeto:
Observe que é recomendável colocar o .jrxml em um package
para que terceiros não tenham acesso. Eu coloquei fora só para mostrar que é
possível rodar dessa maneira sem problema algum.
A classe Bean:
@Entity
@Table(name="tusuario")
public class Usuario {
@Column
private String nome;
@Column
private String email;
@Id
private int id;
//gets/sets
omitidos
Gerando o
relatório
Essa é a classe
principal, que de fato faz gerar o relatório em PDF. Ela pega o layout definido
no iReport, e o JasperReport faz a conversão, veja:
public class GerarRelatorio {
public static void main(String[] args) throws JRException,SQLException {
System.out.println("Gerando relatório...");
UsuarioDAO usuarioDAO = new UsuarioDAO();
List listaUs = usuarioDAO.listaTodos();
JasperReport pathjrxml = JasperCompileManager.compileReport("relatorio/reportex.jrxml");
JasperPrint printReport = JasperFillManager.fillReport(pathjrxml, null, new JRBeanCollectionDataSource(listaUs));
JasperExportManager.exportReportToPdfFile(printReport, "relatorio/reportex.pdf");
System.out.println("Relatorio gerado");
}
Entendendo o relatório
Minha classe UsuarioDAO retorna todos os usuários através de uma query HQL.
public List listaTodos(){
Query query = getSession().createQuery("from Usuario");
List listaUs = query.list();
return listaUs;
}
Na classe
relatório, precisamos informar onde está o arquivo jrxml. Não se esqueça de
criar o folder.
JasperReport report = JasperCompileManager
.compileReport("relatorio/reportcamilo.jrxml");
Dica: se o jrxml
estiver no mesmo package que a classe que gera o relatório, o código acima é
válido. Do contrario, deve ser conforme mostrado abaixo:
"../relatorio/reportblog.jrxml"
Passando o data source
O data source nada mais é do que uma lista com os dados que serão inseridos no relatório.
JasperPrint print = JasperFillManager.fillReport(report, null,
new JRBeanCollectionDataSource(lista));
Obs.: No primeiro argumento,
temos o caminho do layout do relatório gerado pelo iReport, o parâmetro pode
ser null. E criamos um
data source com o conteúdo da lista que tem o resultado HQL.
No class dao:
public List listaUsuario(){
Query query = getSession().createQuery("from Tusuario");
List lista = query.list();
return lista;
Em outra classe:
TUsuarioDAO tusuariodao = new TUsuarioDAO();
List listaUS = tusuariodao.listaUsuario();
Exportando para
um Formato
Para exportar,
temos um método para cada formato de exportação:
JasperExportManager.exportReportToPdfFile(print,
"relatorio/RelatorioUser.pdf");
Obs.: No primeiro argumento, temos a variável que tem o relatório preenchido e o caminho pelo qual ele deve ser exportado.
É só rodar a classe main agora.
Autor: Thyago Henrique Pacher
Nosso pessoal é especializado em produção de sistemas para nuvem de acordo com o que for necessário para sua empresa e altamente configurável. Entre em contato conosco e podera ter seu sistema até hoje mesmo com máximo de garantia de dados salvos na nuvem e podendo recupera-los a hora que quiser. Temos em nosso portfólio o desenvolvimento de bons e grandes sistemas cujo são voltados para condominios ficando em GestCCon Sistema Concierge, JedisaMunck site para muncks, Site para advogados Ronald Arruda, empresas de consignação de créditos, sites institucionais, sites para cursos online com integração a plataformas famosas tais como moodle.
Utilizamos no nosso dia a dia as melhores ferramentas
Comentários
Postar um comentário