iReport+jasperReport之NoXML

jasperReport的这个包net.sf.jasperreports.engine.design 是这样描述的:Contains design time implementations for the library's main interfaces as well as report compiling tools.所以咱们彻底可使用它的API构建本身的报表。 构建JasperDesign对象: 设置一些对应的属性:java

// 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);

字体:express

// 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);

定义报表的参数,并添加到报表设计器上字体

// Parameters  
    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;

开始画报表主体的title部分,不须要的部分能够不用代码标识出来,title部分放置了报表标题字段,只会出如今第一页的上方code

// 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出现orm

// 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对象可使用下面这句产生: Java代码
JasperCompileManager.compileReport(jasperDesign);对象

至此一个完整的报表就能够显示出来了。ci

相关文章
相关标签/搜索