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