jasperReport的这个包
net.sf.jasperreports.engine.design
是这样描述的:Contains design time implementations for the library's main interfaces as well as report compiling tools.因此我们完全可以使用它的API构建自己的报表,还是和前几篇使用同一个数据库表。
构建JasperDesign对象:
设置一些对应的属性:
构建JasperDesign对象:
设置一些对应的属性:
// JasperDesign
JasperDesign jasperDesign = new JasperDesign();
jasperDesign.setName("NoXmlDesignReport" );
jasperDesign.setPageWidth(595 );
jasperDesign.setPageHeight(842 );
jasperDesign.setColumnWidth(515 );
jasperDesign.setColumnSpacing(0 );
jasperDesign.setLeftMargin(40 );
jasperDesign.setRightMargin(40 );
jasperDesign.setTopMargin(50 );
jasperDesign.setBottomMargin(50);
字体:
JasperDesign jasperDesign = new JasperDesign();
jasperDesign.setName("NoXmlDesignReport" );
jasperDesign.setPageWidth(595 );
jasperDesign.setPageHeight(842 );
jasperDesign.setColumnWidth(515 );
jasperDesign.setColumnSpacing(0 );
jasperDesign.setLeftMargin(40 );
jasperDesign.setRightMargin(40 );
jasperDesign.setTopMargin(50 );
jasperDesign.setBottomMargin(50);
//
Fonts
JRDesignStyle normalStyle = new JRDesignStyle();
normalStyle.setName( " Arial_Normal " );
normalStyle.setDefault( true );
normalStyle.setFontName( " Arial " );
normalStyle.setFontSize( 12 );
normalStyle.setPdfFontName( " Helvetica " );
normalStyle.setPdfEncoding( " Cp1252 " );
normalStyle.setPdfEmbedded( false );
jasperDesign.addStyle(normalStyle);
JRDesignStyle boldStyle = new JRDesignStyle();
boldStyle.setName( " Arial_Bold " );
boldStyle.setFontName( " Arial " );
boldStyle.setFontSize( 12 );
boldStyle.setBold( true );
boldStyle.setPdfFontName( " Helvetica-Bold " );
boldStyle.setPdfEncoding( " Cp1252 " );
boldStyle.setPdfEmbedded( false );
jasperDesign.addStyle(boldStyle);
JRDesignStyle italicStyle = new JRDesignStyle();
italicStyle.setName( " Arial_Italic " );
italicStyle.setFontName( " Arial " );
italicStyle.setFontSize( 12 );
italicStyle.setItalic( true );
italicStyle.setPdfFontName( " Helvetica-Oblique " );
italicStyle.setPdfEncoding( " Cp1252 " );
italicStyle.setPdfEmbedded( false );
jasperDesign.addStyle(italicStyle);
定义报表的参数,并添加到报表设计器上
JRDesignStyle normalStyle = new JRDesignStyle();
normalStyle.setName( " Arial_Normal " );
normalStyle.setDefault( true );
normalStyle.setFontName( " Arial " );
normalStyle.setFontSize( 12 );
normalStyle.setPdfFontName( " Helvetica " );
normalStyle.setPdfEncoding( " Cp1252 " );
normalStyle.setPdfEmbedded( false );
jasperDesign.addStyle(normalStyle);
JRDesignStyle boldStyle = new JRDesignStyle();
boldStyle.setName( " Arial_Bold " );
boldStyle.setFontName( " Arial " );
boldStyle.setFontSize( 12 );
boldStyle.setBold( true );
boldStyle.setPdfFontName( " Helvetica-Bold " );
boldStyle.setPdfEncoding( " Cp1252 " );
boldStyle.setPdfEmbedded( false );
jasperDesign.addStyle(boldStyle);
JRDesignStyle italicStyle = new JRDesignStyle();
italicStyle.setName( " Arial_Italic " );
italicStyle.setFontName( " Arial " );
italicStyle.setFontSize( 12 );
italicStyle.setItalic( true );
italicStyle.setPdfFontName( " Helvetica-Oblique " );
italicStyle.setPdfEncoding( " Cp1252 " );
italicStyle.setPdfEmbedded( false );
jasperDesign.addStyle(italicStyle);
//
Parameters
JRDesignParameter parameter = new JRDesignParameter();
parameter.setName( " ReportTitle " );
parameter.setValueClass(java.lang.String. class );
jasperDesign.addParameter(parameter);
定义报表的字段,这些字段是最终显示到报表上的域
JRDesignParameter parameter = new JRDesignParameter();
parameter.setName( " ReportTitle " );
parameter.setValueClass(java.lang.String. class );
jasperDesign.addParameter(parameter);
//
Fields
JRDesignField field = new JRDesignField();
field.setName( " userid " );
field.setValueClass(java.lang.Integer. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " name " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " sex " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " age " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " password " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " department " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
JRDesignBand band = null ;
JRDesignTextField textField = null ;
JRDesignExpression expression = null ;
JRDesignField field = new JRDesignField();
field.setName( " userid " );
field.setValueClass(java.lang.Integer. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " name " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " sex " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " age " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " password " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
field = new JRDesignField();
field.setName( " department " );
field.setValueClass(java.lang.String. class );
jasperDesign.addField(field);
JRDesignBand band = null ;
JRDesignTextField textField = null ;
JRDesignExpression expression = null ;
开始画报表主体的title部分,不需要的部分可以不用代码标识出来,title部分放置了报表标题字段,只会出现在第一页的上方
//
title
band = new JRDesignBand();
band.setHeight( 50 );
textField = new JRDesignTextField();
textField.setBlankWhenNull( true );
textField.setX( 0 );
textField.setY( 10 );
textField.setWidth( 500 );
textField.setHeight( 30 );
textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER);
textField.setStyle(normalStyle);
textField.setFontSize( 22 );
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $P{ReportTitle} " );
textField.setExpression(expression);
band.addElement(textField);
jasperDesign.setTitle(band);
detail部分:排列域的位置,并设置它的值,没一个域的值会最为一个 JRDesignExpression出现
band = new JRDesignBand();
band.setHeight( 50 );
textField = new JRDesignTextField();
textField.setBlankWhenNull( true );
textField.setX( 0 );
textField.setY( 10 );
textField.setWidth( 500 );
textField.setHeight( 30 );
textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_CENTER);
textField.setStyle(normalStyle);
textField.setFontSize( 22 );
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $P{ReportTitle} " );
textField.setExpression(expression);
band.addElement(textField);
jasperDesign.setTitle(band);
//
Detail
// pid
band = new JRDesignBand();
band.setHeight( 20 );
textField = new JRDesignTextField();
textField.setX( 5 );
textField.setY( 4 );
textField.setWidth( 100 );
textField.setHeight( 15 );
textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.Integer. class );
expression.setText( " $F{userid} " );
textField.setExpression(expression);
band.addElement(textField);
// name
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 120 );
textField.setY( 4 );
textField.setWidth( 80 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{name} " );
textField.setExpression(expression);
band.addElement(textField);
// sex
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 200 );
textField.setY( 4 );
textField.setWidth( 30 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{sex} " );
textField.setExpression(expression);
band.addElement(textField);
// age
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 240 );
textField.setY( 4 );
textField.setWidth( 30 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{age} " );
textField.setExpression(expression);
band.addElement(textField);
// password
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 270 );
textField.setY( 4 );
textField.setWidth( 80 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{password} " );
textField.setExpression(expression);
band.addElement(textField);
// department
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 350 );
textField.setY( 4 );
textField.setWidth( 80 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{department} " );
textField.setExpression(expression);
band.addElement(textField);
JasperReport对象可以使用下面这句产生:
// pid
band = new JRDesignBand();
band.setHeight( 20 );
textField = new JRDesignTextField();
textField.setX( 5 );
textField.setY( 4 );
textField.setWidth( 100 );
textField.setHeight( 15 );
textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.Integer. class );
expression.setText( " $F{userid} " );
textField.setExpression(expression);
band.addElement(textField);
// name
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 120 );
textField.setY( 4 );
textField.setWidth( 80 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{name} " );
textField.setExpression(expression);
band.addElement(textField);
// sex
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 200 );
textField.setY( 4 );
textField.setWidth( 30 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{sex} " );
textField.setExpression(expression);
band.addElement(textField);
// age
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 240 );
textField.setY( 4 );
textField.setWidth( 30 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{age} " );
textField.setExpression(expression);
band.addElement(textField);
// password
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 270 );
textField.setY( 4 );
textField.setWidth( 80 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{password} " );
textField.setExpression(expression);
band.addElement(textField);
// department
textField = new JRDesignTextField();
textField.setStretchWithOverflow( true );
textField.setX( 350 );
textField.setY( 4 );
textField.setWidth( 80 );
textField.setHeight( 15 );
textField.setPositionType(JRElement.POSITION_TYPE_FLOAT);
textField.setStyle(normalStyle);
expression = new JRDesignExpression();
expression.setValueClass(java.lang.String. class );
expression.setText( " $F{department} " );
textField.setExpression(expression);
band.addElement(textField);
JasperCompileManager.compileReport(jasperDesign);
至此一个完整的报表就可以显示出来了。