Home > Jasper > JASPER kullanarak dinamik rapor alma

JASPER kullanarak dinamik rapor alma

Şimdi jasper kullnarak dinamik rapor almayı bir örnek üzerinden açıklayayım (bu örnek eclipse için hazırlanmıştır)

1. Yeni bir java projesi açıp, gerekli jar ları indirip class path e eklemek

jasperreports-1.3.4.jar

commons-beanutils.jar

commons-collections.jar

commons-digester.jar

commons-logging.jar

itext.jar

2. Kullanabileceğimiz hazır bir database tablosu varsa bu adımı geçebilirsiniz yoksa örnekteki gib bir database tablosu oluşturun buradaki vereceğim örnek oracle için hazırlanmıştır siz istediğiniz database server kullanıp onun için tablo hazırlayıp ona uygun değişiklikleri yaparsanız kod sorunsuz çalışır.

CREATE TABLE element_table
(
element_id NUMBER,
element_name VARCHAR2(50),
element_description VARCHAR2(1000),
category_id NUMBER,
download_counter NUMBER);

ve tabi tabloya veri girmelisiniz

INSERT INTO element_table (element_id,element_name,element_description,category_id,download_counter)
   VALUES (element_id_seq.NEXTVAL,’Ntv ‘,’NTV haberlerine cebinizden ulaşmanın en kolay yolu!’,6,0);

…………

3.Şimdi jasper ı kullnırken bizim için en can alıcı malzeme olan jrxml oluşturmaya çalışalım;

jasperReport.jrxml diye bir dosya açıp içini aşağıdaki gibi doldurun;


<?xml version="1.0" encoding="UTF-8" ?>

<!-- Created with iReport - A designer for JasperReports -->

<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<jasperReport name="SimpleReport">

<parameter name="rnum" />

<queryString>

<![CDATA[select element_id,element_name,element_description from element_table where rownum < $P{rnum}]]>

</queryString>

<field name="element_id"/>

<field name="element_name"/>

<field name="element_description"/>

<pageHeader>

<band height="30">

<staticText>

<reportElement x="0" y="0" width="69" height="24"/>

<textElement verticalAlignment="Bottom"/>

<text>

<![CDATA[Element Id: ]]>

</text>

</staticText>

<staticText>

<reportElement x="140" y="0" width="69" height="24"/>

<text>

<![CDATA[Element Name: ]]>

</text>

</staticText>

<staticText>

<reportElement x="280" y="0" width="69" height="24"/>

<text>

<![CDATA[Element Description: ]]>

</text>

</staticText>

</band>

</pageHeader>

<detail>

<band height="30">

<textField>

<reportElement x="0" y="0" width="69" height="24"/>

<textFieldExpression>

<![CDATA[$F{element_id}]]>

</textFieldExpression>

</textField>

<textField>

<reportElement x="140" y="0" width="69" height="24"/>

<textFieldExpression>

<![CDATA[$F{element_name}]]>

</textFieldExpression>

</textField>

<textField>

<reportElement x="280" y="0" width="69" height="24"/>

<textFieldExpression>

<![CDATA[$F{element_description}]]>

</textFieldExpression>

</textField>

</band>

</detail>

</jasperReport>



4.Şimdi de yukarıdaki jrxml i kullancak java kodumuzu yazalım ve çalıştıralım.

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
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.design.JRDesignQuery;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.view.JasperViewer;

public class JasperTest {

	public static void main(String args[]) {

		JasperReport jasperReport;

		JasperPrint jasperPrint;

		try {

			// load mysql driver

			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

			String s = "jdbc:oracle:thin:@<hostname>:<port>:<sid>";

			Connection conn = DriverManager.getConnection(s,
					"user_name", "password");

			jasperReport = JasperCompileManager
					.compileReport("jasperReport_demo.jrxml");

			Map parameters = new HashMap();
			parameters.put("rnum", "150");

			jasperPrint = JasperFillManager.fillReport(jasperReport,
					parameters, conn);

			// generates PDF

			JasperExportManager.exportReportToPdfFile(jasperPrint,
					"Simple_Report.pdf");

			// generates HTML

			JasperExportManager.exportReportToHtmlFile(jasperPrint,
					"Simple_Report.html");

			// generates XML

			JasperExportManager.exportReportToXmlFile(jasperPrint,
					"Simple_Report.xml", true);

			System.out.println("FIN");
		} catch (JRException jrException) {
			System.out.println("JR");

			jrException.printStackTrace();

		} catch (SQLException sqlException)

		{
			System.out.println("SQl");
			sqlException.printStackTrace();

		}

	}

}
Jasper Report hakkında daha detaylı bilgi için :
http://jasperforge.org/website/jasperreportswebsite/trunk/index.html?group_id=252
  1. Serkan
    August 28, 2009 at 10:59 am | #1

    Çok faydalı bir yazı olmuş, eline sağlık

  2. burakadam
    August 31, 2009 at 9:32 am | #2

    teşekkürler!

  1. No trackbacks yet.