Generate reports dynamically using Jasper Reports without generating a jasper for each report
You can Generate reports dynamically using Jasper Reports without generating a jasper for each report
,
For basic and generating report using Jasper use this link ireport
package com.imlog.report; import java.sql.Connection; import java.sql.DriverManager; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; 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.JRDesignBand; import net.sf.jasperreports.engine.design.JRDesignExpression; import net.sf.jasperreports.engine.design.JRDesignQuery; import net.sf.jasperreports.engine.design.JRDesignSection; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.type.HorizontalAlignEnum; import net.sf.jasperreports.engine.type.ScaleImageEnum; public class DynamicJasperReport { private static JasperDesign getJasperDesign() throws JRException, ParseException { JRDesignExpression expression = new JRDesignExpression(); JRDesignBand band = new JRDesignBand(); // JasperDesign JasperDesign jasperDesign = new JasperDesign(); jasperDesign.setName("ImLoggerDynamicReport"); jasperDesign.setPageWidth(595); jasperDesign.setPageHeight(842); jasperDesign.setLeftMargin(20); jasperDesign.setRightMargin(20); jasperDesign.setTopMargin(20); jasperDesign.setBottomMargin(20); jasperDesign.setColumnWidth(555); jasperDesign.setColumnSpacing(0); // Fonts jasperDesign.addStyle(DynamicReportUtil.getNormalStyle()); // Parameters jasperDesign.addParameter(DynamicReportUtil.getParameter("ReportTitle", java.lang.String.class)); jasperDesign.addParameter(DynamicReportUtil.getParameter("imagePath", java.lang.String.class)); jasperDesign.addParameter(DynamicReportUtil.getParameter("userId", java.lang.String.class)); // Query JRDesignQuery query = new JRDesignQuery(); query.setText("SELECT * FROM imlog"); jasperDesign.setQuery(query); // Fields jasperDesign.addField(DynamicReportUtil.getField("log_id", java.lang.Integer.class)); jasperDesign.addField(DynamicReportUtil.getField("Time", java.sql.Timestamp.class)); jasperDesign.addField(DynamicReportUtil.getField("Category", java.lang.String.class)); jasperDesign.addField(DynamicReportUtil.getField("Severity", java.lang.String.class)); jasperDesign.addField(DynamicReportUtil.getField("Message", java.lang.String.class)); // Title band = new JRDesignBand(); band.setHeight(73); band.addElement(DynamicReportUtil.getImage(0, 8, 97, 50, ScaleImageEnum.RETAIN_SHAPE, HorizontalAlignEnum.LEFT, "imagePath")); band.addElement(DynamicReportUtil.getTextField(109, 6, 328, 20, HorizontalAlignEnum.CENTER, DynamicReportUtil.getNormalStyle(), 12, "$P{ReportTitle}", java.lang.String.class)); band.addElement(DynamicReportUtil.getStaticText(182, 26, 191, 20, "Daily Log Report (Teminos T24)", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.CENTER, 0)); band.addElement(DynamicReportUtil.getStaticText(156, 46, 243, 20, "(Criteria: Field = “” and Field = “B” and Field = ”C”)", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.CENTER, 0)); band.addElement(DynamicReportUtil.getStaticText(462, 4, 28, 13, "Date:", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.RIGHT, 0)); band.addElement(DynamicReportUtil.getStaticText(462, 20, 28, 16, "Time:", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.RIGHT, 0)); band.addElement(DynamicReportUtil.getStaticText(422, 38, 68, 16, "Generated By:", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.RIGHT, 0)); band.addElement(DynamicReportUtil.getStaticText(496, 4, 50, 13, new SimpleDateFormat("dd.MM.yyyy").format(new Date()) .toString(), DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.LEFT, 0)); band.addElement(DynamicReportUtil .getStaticText(496, 20, 50, 16, new SimpleDateFormat("h.mm a") .format(new Date()).toString(), DynamicReportUtil .getNormalStyle(), HorizontalAlignEnum.LEFT, 0)); band.addElement(DynamicReportUtil.getTextField(496, 38, 50, 16, HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(), 10, "$P{userId}", java.lang.String.class)); jasperDesign.setTitle(band); // Column header band = new JRDesignBand(); band.setHeight(20); band.addElement(DynamicReportUtil .getStaticText(0, 0, 63, 20, "Log ID", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.LEFT, 1)); band.addElement(DynamicReportUtil .getStaticText(63, 0, 120, 20, "Time", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.LEFT, 1)); band.addElement(DynamicReportUtil.getStaticText(183, 0, 80, 20, "Category", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.LEFT, 1)); band.addElement(DynamicReportUtil.getStaticText(263, 0, 100, 20, "Severity", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.LEFT, 1)); band.addElement(DynamicReportUtil.getStaticText(363, 0, 192, 20, "Message", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.LEFT, 1)); jasperDesign.setColumnHeader(band); // Detail band = new JRDesignBand(); band.setHeight(20); band.addElement(DynamicReportUtil.getTextField(0, 0, 63, 20, HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(), 10, "$F{log_id}", java.lang.Integer.class)); band.addElement(DynamicReportUtil.getTextField(63, 0, 120, 20, HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(), 10, "$F{Time}", java.sql.Timestamp.class)); band.addElement(DynamicReportUtil.getTextField(183, 0, 80, 20, HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(), 10, "$F{Category}", java.lang.String.class)); band.addElement(DynamicReportUtil.getTextField(263, 0, 100, 20, HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(), 10, "$F{Severity}", java.lang.String.class)); band.addElement(DynamicReportUtil.getTextField(363, 0, 192, 20, HorizontalAlignEnum.LEFT, DynamicReportUtil.getNormalStyle(), 10, "$F{Message}", java.lang.String.class)); ((JRDesignSection) jasperDesign.getDetailSection()).addBand(band); // Column Footer band = new JRDesignBand(); band.setHeight(59); band.addElement(DynamicReportUtil.getTextField(227, 17, 100, 20, HorizontalAlignEnum.CENTER, DynamicReportUtil.getNormalStyle(), 10, "$V{PAGE_NUMBER}", java.lang.String.class)); jasperDesign.setColumnFooter(band); // Page Footer band = new JRDesignBand(); jasperDesign.setPageFooter(band); // Summary band = new JRDesignBand(); band.setHeight(31); band.addElement(DynamicReportUtil.getStaticText(207, 5, 141, 20, "---- End of the report ----", DynamicReportUtil.getNormalStyle(), HorizontalAlignEnum.CENTER, 0)); jasperDesign.setSummary(band); return jasperDesign; } public static void main(String[] args) throws Exception { Map |
DynamicReportUtil.java
package com.imlog.report;
import java.awt.Color;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;
import
net.sf.jasperreports.engine.JRException;
import
net.sf.jasperreports.engine.JRField;
import
net.sf.jasperreports.engine.JRParameter;
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.JRDesignBand;
import
net.sf.jasperreports.engine.design.JRDesignElement;
import
net.sf.jasperreports.engine.design.JRDesignExpression;
import
net.sf.jasperreports.engine.design.JRDesignField;
import
net.sf.jasperreports.engine.design.JRDesignFrame;
import
net.sf.jasperreports.engine.design.JRDesignGroup;
import
net.sf.jasperreports.engine.design.JRDesignImage;
import net.sf.jasperreports.engine.design.JRDesignLine;
import
net.sf.jasperreports.engine.design.JRDesignParameter;
import
net.sf.jasperreports.engine.design.JRDesignQuery;
import
net.sf.jasperreports.engine.design.JRDesignSection;
import net.sf.jasperreports.engine.design.JRDesignStaticText;
import
net.sf.jasperreports.engine.design.JRDesignStyle;
import
net.sf.jasperreports.engine.design.JRDesignTextField;
import
net.sf.jasperreports.engine.design.JRDesignVariable;
import
net.sf.jasperreports.engine.design.JasperDesign;
import
net.sf.jasperreports.engine.type.CalculationEnum;
import
net.sf.jasperreports.engine.type.HorizontalAlignEnum;
import
net.sf.jasperreports.engine.type.ModeEnum;
import net.sf.jasperreports.engine.type.PositionTypeEnum;
import
net.sf.jasperreports.engine.type.ResetTypeEnum;
import
net.sf.jasperreports.engine.type.ScaleImageEnum;
public class DynamicReportUtil {
static
JRDesignImage getImage(int x_postion, int y_position, int width, int height,ScaleImageEnum
scale_type, HorizontalAlignEnum align_type,String Parameter) {
//
TODO Auto-generated method stub
JRDesignExpression
expression = new JRDesignExpression();
JRDesignImage
image = new JRDesignImage(null);
expression.setValueClass(java.lang.String.class);
expression.setText("$P{"+Parameter+"}");
image.setX(x_postion);
image.setY(y_position);
image.setWidth(width);
image.setHeight(height);
image.setScaleImage(scale_type);
image.setHorizontalAlignment(align_type);
image.setExpression(expression);
return
image;
}
static
JRParameter getParameter(String string, Class<?> class1) {
//
TODO Auto-generated method stub
JRDesignParameter
parameter = new JRDesignParameter();
parameter.setName(string);
parameter.setValueClass(class1);
return
parameter;
}
static
JRField getField(String string, Class<?> class1) {
//
TODO Auto-generated method stub
JRDesignField field = new JRDesignField();
field.setName(string);
field.setValueClass(class1);
return
field;
}
static
JRDesignElement getStaticText(int x, int y, int width, int height,
String
text, JRDesignStyle normalStyle, HorizontalAlignEnum alignType, int
color_flag) {
//
TODO Auto-generated method stub
JRDesignStaticText
staticText = new JRDesignStaticText();
staticText.setX(x);
staticText.setY(y);
//staticText.setStretchWithOverflow(true);
staticText.setWidth(width);
staticText.setHeight(height);
staticText.setText(text);
if(color_flag == 1){
staticText.setForecolor(new
Color(240,240,240));
staticText.setBackcolor(new
Color(102,0,102));
}
staticText.setMode(ModeEnum.OPAQUE);
staticText.setFontSize(10);
staticText.setHorizontalAlignment(alignType);
staticText.setStyle(normalStyle);
return
staticText;
}
static
JRDesignTextField getTextField(int X_position, int y_position, int width, int
height,HorizontalAlignEnum type, JRDesignStyle Style, int fontSize,
String Parameter, Class<?> class1) {
//
TODO Auto-generated method stub
JRDesignTextField
textField = new JRDesignTextField();
JRDesignExpression
expression = new JRDesignExpression();
expression.setValueClass(class1);
expression.setText(Parameter);
textField.setStretchWithOverflow(true);
textField.setBlankWhenNull(true);
textField.setX(X_position);
textField.setY(y_position);
textField.setWidth(width);
textField.setHeight(height);
textField.setHorizontalAlignment(type);
textField.setStyle(Style);
textField.setFontSize(fontSize);
textField.setExpression(expression);
return
textField;
}
public
static JRDesignStyle getNormalStyle() {
//
TODO Auto-generated method stub
JRDesignStyle
normalStyle = new JRDesignStyle();
normalStyle.setName("Sans_Normal");
normalStyle.setDefault(true);
normalStyle.setBold(true);
normalStyle.setFontName("SansSerif");
normalStyle.setFontSize(10);
normalStyle.setPdfFontName("Helvetica");
normalStyle.setPdfEncoding("Cp1252");
normalStyle.setPdfEmbedded(false);
return
normalStyle;
}
}
|
Comments
Post a Comment