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

相關文章
相關標籤/搜索