How to fill Jasper Table using Collection of data using Java?
UPDATED: 25 November 2015
Tags:
jasper-reports
Following excerpt show how you can fill the Jasper Table using Collection of data in Java. Watch the video to understand the steps easily.
Source code (template_Table.jrxml)
Source code (Item.java)
Source code (JasperTableExample.java)
Source code (template_Table.jrxml)
<?xml version="1.0" encoding="UTF-8"?> <!-- Created with Jaspersoft Studio version 6.1.1.final using JasperReports Library version 6.1.1 --> <!-- 2015-11-25T00:02:30 --> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="template_Table" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1a0aa80b-dc07-4dca-bdbc-aa78eeb0d12b"> <style name="Table_TH" mode="Opaque" backcolor="#F0F8FF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> <topPen lineWidth="0.5" lineColor="#000000"/> <leftPen lineWidth="0.5" lineColor="#000000"/> <bottomPen lineWidth="0.5" lineColor="#000000"/> <rightPen lineWidth="0.5" lineColor="#000000"/> </box> </style> <style name="Table_CH" mode="Opaque" backcolor="#BFE1FF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> <topPen lineWidth="0.5" lineColor="#000000"/> <leftPen lineWidth="0.5" lineColor="#000000"/> <bottomPen lineWidth="0.5" lineColor="#000000"/> <rightPen lineWidth="0.5" lineColor="#000000"/> </box> </style> <style name="Table_TD" mode="Opaque" backcolor="#FFFFFF"> <box> <pen lineWidth="0.5" lineColor="#000000"/> <topPen lineWidth="0.5" lineColor="#000000"/> <leftPen lineWidth="0.5" lineColor="#000000"/> <bottomPen lineWidth="0.5" lineColor="#000000"/> <rightPen lineWidth="0.5" lineColor="#000000"/> </box> </style> <subDataset name="ItemDataset" uuid="2914f7c6-c2d7-448b-b0c1-090970e18ed6"> <queryString> <![CDATA[]]> </queryString> <field name="name" class="java.lang.String"/> <field name="price" class="java.lang.Double"/> </subDataset> <parameter name="ItemDataSource" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/> <queryString> <![CDATA[]]> </queryString> <background> <band splitType="Stretch"/> </background> <detail> <band height="256" splitType="Stretch"> <componentElement> <reportElement x="0" y="0" width="555" height="200" uuid="7786bb05-503a-4b6a-991a-a7bcf3abad07"> <property name="com.jaspersoft.studio.layout" value="com.jaspersoft.studio.editor.layout.VerticalRowLayout"/> </reportElement> <jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> <datasetRun subDataset="ItemDataset" uuid="d3e1e03a-2c83-4436-9e50-79518bc3d337"> <dataSourceExpression><![CDATA[$P{ItemDataSource}]]></dataSourceExpression> </datasetRun> <jr:column width="130" uuid="dca8961f-ce2d-47ac-879c-b15847d170a9"> <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column1"/> <jr:tableHeader height="30"> <staticText> <reportElement x="0" y="0" width="130" height="30" uuid="f60d1675-6fb6-4569-93ca-de32b3a8e861"/> <text><![CDATA[Item Name]]></text> </staticText> </jr:tableHeader> <jr:detailCell height="30"> <textField> <reportElement x="0" y="0" width="130" height="30" uuid="f1de366a-b36f-4200-9b1e-7a0009be5373"/> <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression> </textField> </jr:detailCell> </jr:column> <jr:column width="140" uuid="980fffb5-1088-47a6-b00f-b5d08b7093c9"> <property name="com.jaspersoft.studio.components.table.model.column.name" value="Column2"/> <jr:tableHeader height="30"> <staticText> <reportElement x="0" y="0" width="140" height="30" uuid="16679b95-2e6e-4ca1-b8b6-dd7b74267c56"/> <text><![CDATA[Item Price]]></text> </staticText> </jr:tableHeader> <jr:detailCell height="30"> <textField> <reportElement x="0" y="0" width="140" height="30" uuid="341e7faf-9680-4941-a9a4-ac78b8f4aae0"/> <textFieldExpression><![CDATA[$F{price}]]></textFieldExpression> </textField> </jr:detailCell> </jr:column> </jr:table> </componentElement> </band> </detail> </jasperReport>
Source code (Item.java)
public class Item { private String name; private Double price; // getter-setter }
Source code (JasperTableExample.java)
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.javaquery.bean.Item; import net.sf.jasperreports.engine.JREmptyDataSource; 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.data.JRBeanCollectionDataSource; /** * @author javaQuery * @date 24nd November, 2015 * @Github: https://github.com/javaquery/Examples */ public class JasperTableExample { public static void main(String[] args) { try { /* User home directory location */ String userHomeDirectory = System.getProperty("user.home"); /* Output file location */ String outputFile = userHomeDirectory + File.separatorChar + "JasperTableExample.pdf"; /* List to hold Items */ List<Item> listItems = new ArrayList<Item>(); /* Create Items */ Item iPhone = new Item(); iPhone.setName("iPhone 6S"); iPhone.setPrice(65000.00); Item iPad = new Item(); iPad.setName("iPad Pro"); iPad.setPrice(70000.00); /* Add Items to List */ listItems.add(iPhone); listItems.add(iPad); /* Convert List to JRBeanCollectionDataSource */ JRBeanCollectionDataSource itemsJRBean = new JRBeanCollectionDataSource(listItems); /* Map to hold Jasper report Parameters */ Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("ItemDataSource", itemsJRBean); /* Using compiled version(.jasper) of Jasper report to generate PDF */ JasperPrint jasperPrint = JasperFillManager.fillReport("resources/com/javaquery/jasper/templates/template_Table.jasper", parameters, new JREmptyDataSource()); /* outputStream to create PDF */ OutputStream outputStream = new FileOutputStream(new File(outputFile)); /* Write content to PDF file */ JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); System.out.println("File Generated"); } catch (JRException ex) { ex.printStackTrace(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } } }
Tags:
jasper-reports
0 comments :