1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Tutorial Jasper Ireport Gerando Chart ( Grafico ) com Array List

Amigos, Gujeiros!

Compartilho meu conhecimento com vocês,fiz um tutorial de como fazer um relatorio com grafico, é simples mais vocês não imagina como deu trabalho!

1- Dados do Relatorio, contem gets e sets seria a camada model dentro do seu projeto.

package jasper;

public class DadosGrafico {

    private String aplicativoOpcional;

    private Double porcentagem;

    public String getAplicativoOpcional() {
        return aplicativoOpcional;
    }

    public void setAplicativoOpcional(String aplicativoOpcional) {
        this.aplicativoOpcional = aplicativoOpcional;
    }

    public Double getPorcentagem() {
        return porcentagem;
    }

    public void setPorcentagem(Double porcentagem) {
        this.porcentagem = porcentagem;
    }





}

Gerador de Relatorio, contem o Array List com o codigo Jasper

package jasper;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;

public class RelatorioGrafico {

    DadosGrafico dataBean;

    ArrayList<DadosGrafico> relatorioList = new ArrayList<DadosGrafico>();

    Map<String, Object> parameters;

    JRBeanCollectionDataSource jrBC;

    JasperReport jasperRelato;

    JasperPrint jasperPrint;

    BufferedImage imagemGrafico = null;

    public ArrayList<DadosGrafico> dadosRelatorioList() {

          relatorioList.add(dadosRelato("Writer", 28.00));
          relatorioList.add(dadosRelato("Calc", 55.00));
          relatorioList.add(dadosRelato("Impress", 17.00));
          return relatorioList;
       }

     private DadosGrafico dadosRelato(String aplicativoOpcional, Double porcentagem) {
             dataBean = new DadosGrafico();

          dataBean.setAplicativoOpcional(aplicativoOpcional);
          dataBean.setPorcentagem(porcentagem);

          return dataBean;
       }


    public void gerarRelatorio() {

        dadosRelatorioList();    

        try {
            DefaultCategoryDataset defaultCategoryDataset = new DefaultCategoryDataset();
            Iterator<DadosGrafico> iterator = relatorioList.iterator();
            while (iterator.hasNext()) {
            DadosGrafico dadosGrafico = (DadosGrafico) iterator.next();
            defaultCategoryDataset.addValue(dadosGrafico.getPorcentagem(), 
                    dadosGrafico.getAplicativoOpcional(),
                    dadosGrafico.getAplicativoOpcional());
            }
            JFreeChart chart = ChartFactory.createBarChart3D(
                    "Porcentagem do Tempo", 
                    "Aplicativo",
                    "Tempo",
                    defaultCategoryDataset, 
                    PlotOrientation.VERTICAL,
                    true, 
                    false, 
                    false);
            chart.setBorderVisible(true);
            chart.setBorderPaint(Color.black);
            imagemGrafico = chart.createBufferedImage(400, 250);
            } catch (Exception e) {
                e.printStackTrace();
            }




        try {
            parameters = new HashMap<String, Object>();
            parameters.put("imagemGrafico", imagemGrafico);

            jrBC = new JRBeanCollectionDataSource(relatorioList);

            jasperRelato = (JasperReport) JRLoader.loadObject(getClass().getClassLoader().getResource("ireport/relatorioGrafico.jasper"));

            jasperPrint = JasperFillManager.fillReport(jasperRelato, parameters, jrBC);

            JasperExportManager.exportReportToPdfFile(jasperPrint, "/home/relatorio/teste/relatorioGrafico.pdf");

            System.out.println("Gerou o Relatorio PDF");

        } catch (JRException e) {
            e.printStackTrace();
        }
    }

    public ArrayList<DadosGrafico> getRelatorioList() {
        return relatorioList;
    }

    /**
     * @param relatorioList
     *            the relatorioList to set
     */
    public void setRelatorioList(ArrayList<DadosGrafico> relatorioList) {
        this.relatorioList = relatorioList;
    }

    public static void main(String[] args) {
        new  RelatorioGrafico().gerarRelatorio();
    }

}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags ireport jfreechart ou faça a sua própria pergunta.