jasperreports 动态报表代码

 

jasperreports是一个用来开发报表的组件,通常和ireport来配合使用,可以快速的构建出漂亮的报表。但是ireport画出的报表模板过于死板,就是不支持动态的列。现在要自己实现一个报表模板,先参考ireport工具画出的模板,然后改改,用java代码自己实现一个。

       项目组目前就是这么做的,自己去写一个模板,一个横排的,一个竖排的,应为字段比较多,一般采用竖排的。我们项目组做动态报表没有用DynamicJasper这个开源的动态报表的组件,原因是我觉得他用起来也不太方便。还有就是时间的问题。

       做了两个模板,现在备份下来。首先是横排的模板

Java代码
  1. package  cn.hzmc.dynamicreport.example7;   
  2.   
  3. import  java.awt.Color;   
  4. import  java.sql.Connection;   
  5. import  java.sql.SQLException;   
  6. import  java.text.SimpleDateFormat;   
  7. import  java.util.Date;   
  8. import  java.util.HashMap;   
  9. import  java.util.Map;   
  10.   
  11. import  net.sf.jasperreports.engine.JRAlignment;   
  12. import  net.sf.jasperreports.engine.JRException;   
  13. import  net.sf.jasperreports.engine.JRReport;   
  14. import  net.sf.jasperreports.engine.JasperCompileManager;   
  15. import  net.sf.jasperreports.engine.JasperExportManager;   
  16. import  net.sf.jasperreports.engine.JasperFillManager;   
  17. import  net.sf.jasperreports.engine.JasperPrint;   
  18. import  net.sf.jasperreports.engine.JasperReport;   
  19. import  net.sf.jasperreports.engine.base.JRBaseLine;   
  20. import  net.sf.jasperreports.engine.base.JRBasePrintText;   
  21. import  net.sf.jasperreports.engine.design.JRDesignBand;   
  22. import  net.sf.jasperreports.engine.design.JRDesignExpression;   
  23. import  net.sf.jasperreports.engine.design.JRDesignField;   
  24. import  net.sf.jasperreports.engine.design.JRDesignLine;   
  25. import  net.sf.jasperreports.engine.design.JRDesignQuery;   
  26. import  net.sf.jasperreports.engine.design.JRDesignStaticText;   
  27. import  net.sf.jasperreports.engine.design.JRDesignStyle;   
  28. import  net.sf.jasperreports.engine.design.JRDesignTextField;   
  29. import  net.sf.jasperreports.engine.design.JasperDesign;   
  30.   
  31. import  com.capaa.pipe.config.ReadConfig;   
  32.   
  33. class  Sample6 {   
  34.      @SuppressWarnings ( "deprecation" )   
  35.     Sample6()  throws  Exception {   
  36.            
  37.         Connection connection = getConnection();   
  38.            
  39.         JasperDesign jasperDesign =  new  JasperDesign();   
  40.         JRDesignStyle normalStyle = setReportSytle(jasperDesign);   
  41.            
  42.         JRDesignQuery query =  new  JRDesignQuery();   
  43.         query.setText( "select userid,name,age,sex,password,department from person" );   
  44.         jasperDesign.setQuery(query);          
  45.          //addReportFiled(jasperDesign);   
  46.            
  47.          // Title   
  48.         JRDesignBand band =  new  JRDesignBand();   
  49.         band.setHeight( 20 );   
  50.         JRDesignStaticText staticText =  new  JRDesignStaticText();   
  51.            
  52.         staticText.setX( 200 );   
  53.         staticText.setY( 0 );   
  54.         staticText.setWidth( 200 );   
  55.         staticText.setHeight( 15 );   
  56.         staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);   //设置文本的对齐方式   
  57.         staticText.setStyle(normalStyle);   
  58.         staticText.setText( "杭州美创科技有限公司审计报表 " );   
  59.         band.addElement(staticText);           
  60.         JRDesignLine line =  new  JRDesignLine();        
  61.         line.setX( 0 );   
  62.         line.setY( 19 );   
  63.         line.setWidth( 500 );   
  64.         line.setHeight( 1 );   
  65.         line.setForecolor( new  Color( 0x99 , 0xFF , 0xFF ));   
  66.         band.addElement(line);   
  67.         jasperDesign.setTitle(band);   
  68.   
  69.          // Page header   
  70.         band =  new  JRDesignBand();   
  71.          //band.setHeight(20);   
  72.         band.setHeight( 0 );   
  73.         jasperDesign.setPageHeader(band);   
  74.   
  75.          // Column header   
  76.         band =  new  JRDesignBand();   
  77.         band.setHeight( 20 );   
  78.            
  79.           // 开始添加列字段   
  80.         String[] headers = { "USERID" , "NAME" , "AGE" , "SEX" , "PASSWORD" , "DEPARTMENT" };   
  81.         String[] alias = { "USERID" , "NAME" , "AGE" , "SEX" , "PASSWORD" , "DEPARTMENT" };   
  82.           int  X =  80 ;   
  83.           int  columnHeaderfontSize =  10 ;   
  84.           int  fontSize =  8 ;   
  85.           int  textHeight =  20 ;   
  86.           int  textWidth =  80 ;   
  87.           int  detailHeight =  20 ;   
  88.          JRDesignBand detail =  new  JRDesignBand();   
  89.          detail.setHeight(detailHeight);   
  90.          for ( int  i =  0 ;i
  91.             JRDesignStaticText jrstaticText =  new  JRDesignStaticText();     
  92.             jrstaticText.setText(headers[i]);    
  93.                
  94.             jrstaticText.setFontSize(columnHeaderfontSize);     
  95.             jrstaticText.setHeight(textHeight);     
  96.             jrstaticText.setWidth(textWidth);    
  97.              if (i== 0 ){   
  98.                 X= 0 ;   
  99.             } else {   
  100.                 X =  80 ;   
  101.             }   
  102.             jrstaticText.setX(X * i);     
  103.             jrstaticText.setPdfFontName( "STSong-Light" );     
  104.             jrstaticText.setPdfEmbedded( true );     
  105.             jrstaticText.setPdfEncoding( "UniGB-UCS2-H" );     
  106. //          jrstaticText.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER);     
  107. //          jrstaticText.setLeftBorder(JRBaseLine.PEN_1_POINT);     
  108. //          jrstaticText.setTopBorder(JRBaseLine.PEN_1_POINT);     
  109. //          jrstaticText.setRightBorder(JRBaseLine.PEN_1_POINT);     
  110. //          jrstaticText.setBottomBorder(JRBaseLine.PEN_1_POINT);     
  111.             jrstaticText.setForecolor(Color.blue);   
  112.          //  jrstaticText.setStretchType((byte)0);   
  113.             band.addElement(jrstaticText);     
  114.                
  115.              // 定义字段,注册字段   
  116.             JRDesignField field =  new  JRDesignField();   
  117.             field.setName(alias[i]);   
  118.             field.setValueClass(String. class );   
  119.             jasperDesign.addField(field);   
  120.                
  121.              // add text fields for displaying fields   
  122.             JRDesignTextField textField =  new  JRDesignTextField();   
  123.             JRDesignExpression expression =  new  JRDesignExpression();   
  124.             expression.setText( "$F{"  + alias[i] +  "}" );   
  125.             expression.setValueClass(String. class );   
  126.             textField.setExpression(expression);   
  127.             textField.setFontSize(fontSize);   
  128.             textField.setHeight(textHeight);   
  129.             textField.setWidth(textWidth);   
  130.             textField.setX(X * i);   
  131.             textField.setPdfFontName( "STSong-Light" );    
  132.             textField.setPdfEmbedded( true );   
  133.             textField.setPdfEncoding( "UniGB-UCS2-H" );     
  134.             textField.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER);   
  135.             textField.setLeftBorder(JRBaseLine.PEN_1_POINT);   
  136.             textField.setTopBorder(JRBaseLine.PEN_1_POINT);   
  137.             textField.setRightBorder(JRBaseLine.PEN_1_POINT);   
  138.             textField.setBottomBorder(JRBaseLine.PEN_1_POINT);   
  139.              //textField.setForecolor(new Color(0x99,0xFF,0xFF));   
  140.             textField.setForecolor(Color.blue);   
  141.             textField.setStretchWithOverflow( true );   
  142.             detail.addElement(textField);   
  143.         }   
  144.             
  145.         jasperDesign.setColumnHeader(band);   
  146.            
  147.          //detail   
  148.         jasperDesign.setDetail(detail);   
  149.            
  150.          // Column footer   
  151.         band =  new  JRDesignBand();   
  152.         band.setHeight( 10 );   
  153.         jasperDesign.setColumnFooter(band);   
  154.          // Page footer   
  155.         band =  new  JRDesignBand();   
  156.         band.setHeight( 80 );   
  157.            
  158.         staticText =  new  JRDesignStaticText();   
  159.         staticText.setX( 0 );    
  160.         staticText.setY( 0 );   
  161.         staticText.setWidth( 100 );   
  162.         staticText.setHeight( 20 );   
  163.         staticText.setPdfFontName( "STSong-Light" );      
  164.         staticText.setPdfEmbedded( true );      
  165.         staticText.setPdfEncoding( "UniGB-UCS2-H" );     
  166.         SimpleDateFormat sdf =  new  SimpleDateFormat( "yyyy/MM/dd" );   
  167.         staticText.setText(sdf.format( new  Date()));   
  168.         band.addElement(staticText);   
  169.            
  170.            
  171.         JRDesignTextField textField =  new  JRDesignTextField();   
  172.         textField.setX( 450 );    
  173.         textField.setY( 0 );   
  174.         textField.setWidth( 100 );   
  175.         textField.setHeight( 20 );   
  176.         textField.setPdfFontName( "STSong-Light" );      
  177.         textField.setPdfEmbedded( true );      
  178.         textField.setPdfEncoding( "UniGB-UCS2-H" );     
  179.            
  180.         JRDesignExpression expression =  new  JRDesignExpression();   
  181.          expression =  new  JRDesignExpression();   
  182.          expression.setValueClass(java.lang.Integer. class );        
  183.          expression.setText( "$V{PAGE_NUMBER}" );   
  184.             
  185.         textField.setExpression(expression);   
  186.         band.addElement(textField);   
  187.         jasperDesign.setPageFooter(band);   
  188.            
  189.         System.out.println(expression.getText());   
  190.          // Summary   
  191.         band =  new  JRDesignBand();   
  192.         band.setHeight( 0 );   
  193.   
  194.          /* **************************************************************** */   
  195.          /* Here My doubt */   
  196.          /*  
  197.          * JRDesignChart chart1 = new  
  198.          * JRDesignChart(null,JRChart.CHART_TYPE_LINE); chart1.setHeight(100);  
  199.          * chart1.setBorderColor(Color.red); chart1.setForecolor(Color.BLACK);  
  200.          * chart1.setWidth(200);  
  201.          */   
  202.   
  203.          // band.addElement(chart1);   
  204.         jasperDesign.setSummary(band);   
  205.   
  206.         System.out.println( "After Connection" );   
  207.   
  208.         JasperReport jasperReport = JasperCompileManager   
  209.                 .compileReport(jasperDesign);   
  210.         Map parameters =  new  HashMap();   
  211.         System.out.println( "After Parameter" );   
  212.         JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,   
  213.                 parameters, connection);   
  214.         System.out.println( "After Print" );   
  215.            
  216.         JasperExportManager.exportReportToHtmlFile(jasperPrint,  "D://test2.html" );   
  217.         JasperExportManager.exportReportToPdfFile(jasperPrint,  "D://test2.pdf" );   
  218.         JasperExportManager.exportReportToXmlFile(jasperPrint,  "D://test2.xml" false );   
  219.            
  220.         System.out.println( "After Export" );   
  221.   
  222.     }   
  223.   
  224.      private   void  addReportFiled(JasperDesign jasperDesign)  throws  JRException {   
  225.         JRDesignField field;   
  226.         field= new  JRDesignField();   
  227.         field.setName( "USERID" );   
  228.         field.setValueClass(java.math.BigDecimal. class );   
  229.         jasperDesign.addField(field);   
  230.            
  231.         field =  new  JRDesignField();   
  232.         field.setName( "NAME" );   
  233.         field.setValueClass(java.lang.String. class );   
  234.         jasperDesign.addField(field);   
  235.            
  236.         field =  new  JRDesignField();   
  237.         field.setName( "AGE" );   
  238.         field.setValueClass(java.lang.String. class );   
  239.         jasperDesign.addField(field);   
  240.            
  241.         field =  new  JRDesignField();   
  242.         field.setName( "SEX" );   
  243.         field.setValueClass(java.lang.String. class );   
  244.         jasperDesign.addField(field);   
  245.            
  246.         field =  new  JRDesignField();   
  247.         field.setName( "PASSWORD" );   
  248.         field.setValueClass(java.lang.String. class );   
  249.         jasperDesign.addField(field);   
  250.            
  251.         field =  new  JRDesignField();   
  252.         field.setName( "DEPARTMENT" );   
  253.         field.setValueClass(java.lang.String. class );   
  254.         jasperDesign.addField(field);   
  255.     }   
  256.   
  257.      private  JRDesignStyle setReportSytle(JasperDesign jasperDesign)   
  258.              throws  JRException {   
  259.         jasperDesign.setName( "SampleReport" );   
  260.         jasperDesign.setPageWidth( 595 );   
  261.         jasperDesign.setPageHeight( 842 );   
  262.         jasperDesign.setColumnWidth( 535 );   
  263.         jasperDesign.setColumnSpacing( 0 );   
  264.            
  265.         jasperDesign.setLeftMargin( 30 );   
  266.         jasperDesign.setRightMargin( 30 );   
  267.         jasperDesign.setTopMargin( 20 );   
  268.         jasperDesign.setBottomMargin( 20 );   
  269.          // whenNoDataType="NoPages"   
  270.         jasperDesign.setWhenNoDataType(JRReport.WHEN_NO_DATA_TYPE_BLANK_PAGE);   
  271.          // isTitleNewPage="false"   
  272.         jasperDesign.setTitleNewPage( false );   
  273.          // isSummaryNewPage="false"   
  274.         jasperDesign.setSummaryNewPage( false );   
  275.      //  jasperDesign.setOrientation(JRReport.ORIENTATION_PORTRAIT);   
  276.      //  jasperDesign.setPrintOrder(JRReport.PRINT_ORDER_VERTICAL);   
  277.            
  278.         JRDesignStyle normalStyle =  new  JRDesignStyle();   
  279.         normalStyle.setName( "Arial_Normal" );   
  280.         normalStyle.setDefault( true );   
  281.         normalStyle.setFontName( "Arial" );   
  282.         normalStyle.setFontSize( 12 );   
  283.         normalStyle.setPdfFontName( "STSong-Light" );   
  284.         normalStyle.setPdfEncoding( "UniGB-UCS2-H" );   
  285.         normalStyle.setPdfEmbedded( true );   
  286.         jasperDesign.addStyle(normalStyle);   
  287.   
  288.         JRDesignStyle boldStyle =  new  JRDesignStyle();   
  289.         boldStyle.setName( "Arial_Bold" );   
  290.         boldStyle.setFontName( "Arial" );   
  291.         boldStyle.setFontSize( 12 );   
  292.         boldStyle.setBold( true );   
  293.         boldStyle.setPdfFontName( "STSong-Light" );   
  294.         boldStyle.setPdfEncoding( "UniGB-UCS2-H" );   
  295.         boldStyle.setPdfEmbedded( true );   
  296.         jasperDesign.addStyle(boldStyle);   
  297.   
  298.         JRDesignStyle italicStyle =  new  JRDesignStyle();   
  299.         italicStyle.setName( "Arial_Italic" );   
  300.         italicStyle.setFontName( "Arial" );   
  301.         italicStyle.setFontSize( 12 );   
  302.         italicStyle.setItalic( true );   
  303.         italicStyle.setPdfFontName( "STSong-Light" );   
  304.         italicStyle.setPdfEncoding( "UniGB-UCS2-H" );   
  305.         italicStyle.setPdfEmbedded( true );   
  306.         jasperDesign.addStyle(italicStyle);   
  307.          return  normalStyle;   
  308.     }   
  309.   
  310.      private  Connection getConnection()  throws  SQLException {   
  311.         Connection connection = ReadConfig.getProduceInstance().getDataSource()   
  312.                 .getConnection();   
  313.          return  connection;   
  314.     }   
  315.   
  316. }   
  317.   
  318.      class  Sample {   
  319.      public   static   void  main(String args[])  throws  Exception {   
  320.         Sample6 obj =  new  Sample6();   
  321.   
  322.     }   
  323.   
  324. }  
package cn.hzmc.dynamicreport.example7;

import java.awt.Color;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRAlignment;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRReport;
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.base.JRBaseLine;
import net.sf.jasperreports.engine.base.JRBasePrintText;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignField;
import net.sf.jasperreports.engine.design.JRDesignLine;
import net.sf.jasperreports.engine.design.JRDesignQuery;
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.JasperDesign;

import com.capaa.pipe.config.ReadConfig;

class Sample6 {
	@SuppressWarnings("deprecation")
	Sample6() throws Exception {
		
		Connection connection = getConnection();
		
		JasperDesign jasperDesign = new JasperDesign();
		JRDesignStyle normalStyle = setReportSytle(jasperDesign);
		
		JRDesignQuery query = new JRDesignQuery();
		query.setText("select userid,name,age,sex,password,department from person");
		jasperDesign.setQuery(query);		
		//addReportFiled(jasperDesign);
		
		// Title
		JRDesignBand band = new JRDesignBand();
		band.setHeight(20);
		JRDesignStaticText staticText = new JRDesignStaticText();
		
		staticText.setX(200);
		staticText.setY(0);
		staticText.setWidth(200);
		staticText.setHeight(15);
		staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);  //设置文本的对齐方式
		staticText.setStyle(normalStyle);
		staticText.setText("杭州美创科技有限公司审计报表 ");
		band.addElement(staticText);		
		JRDesignLine line = new JRDesignLine();		
		line.setX(0);
		line.setY(19);
		line.setWidth(500);
		line.setHeight(1);
		line.setForecolor(new Color(0x99,0xFF,0xFF));
		band.addElement(line);
		jasperDesign.setTitle(band);

		// Page header
		band = new JRDesignBand();
		//band.setHeight(20);
		band.setHeight(0);
		jasperDesign.setPageHeader(band);

		// Column header
		band = new JRDesignBand();
		band.setHeight(20);
		
		 // 开始添加列字段
		String[] headers = {"USERID","NAME","AGE","SEX","PASSWORD","DEPARTMENT"};
		String[] alias = {"USERID","NAME","AGE","SEX","PASSWORD","DEPARTMENT"};
		 int X = 80;
		 int columnHeaderfontSize = 10;
		 int fontSize = 8;
		 int textHeight = 20;
		 int textWidth = 80;
		 int detailHeight = 20;
		 JRDesignBand detail = new JRDesignBand();
		 detail.setHeight(detailHeight);
		for(int i = 0;i

 然后是竖排的模板

Java代码
  1. package  cn.hzmc.dynamicreport.example8;   
  2.   
  3. import  java.awt.Color;   
  4. import  java.sql.Connection;   
  5. import  java.sql.SQLException;   
  6. import  java.text.SimpleDateFormat;   
  7. import  java.util.Date;   
  8. import  java.util.HashMap;   
  9. import  java.util.Map;   
  10.   
  11. import  net.sf.jasperreports.engine.JRAlignment;   
  12. import  net.sf.jasperreports.engine.JRException;   
  13. import  net.sf.jasperreports.engine.JRReport;   
  14. import  net.sf.jasperreports.engine.JasperCompileManager;   
  15. import  net.sf.jasperreports.engine.JasperExportManager;   
  16. import  net.sf.jasperreports.engine.JasperFillManager;   
  17. import  net.sf.jasperreports.engine.JasperPrint;   
  18. import  net.sf.jasperreports.engine.JasperReport;   
  19. import  net.sf.jasperreports.engine.base.JRBaseLineBox;   
  20. import  net.sf.jasperreports.engine.base.JRBasePrintText;   
  21. import  net.sf.jasperreports.engine.design.JRDesignBand;   
  22. import  net.sf.jasperreports.engine.design.JRDesignExpression;   
  23. import  net.sf.jasperreports.engine.design.JRDesignField;   
  24. import  net.sf.jasperreports.engine.design.JRDesignLine;   
  25. import  net.sf.jasperreports.engine.design.JRDesignQuery;   
  26. import  net.sf.jasperreports.engine.design.JRDesignStaticText;   
  27. import  net.sf.jasperreports.engine.design.JRDesignStyle;   
  28. import  net.sf.jasperreports.engine.design.JRDesignTextField;   
  29. import  net.sf.jasperreports.engine.design.JasperDesign;   
  30.   
  31. import  com.capaa.pipe.config.ReadConfig;   
  32.   
  33. class  Sample {   
  34.      @SuppressWarnings ( "deprecation" )   
  35.     Sample()  throws  Exception {   
  36.            
  37.         Connection connection = getConnection();   
  38.            
  39.         JasperDesign jasperDesign =  new  JasperDesign();   
  40.         JRDesignStyle normalStyle = setReportSytle(jasperDesign);   
  41.            
  42.         JRDesignQuery query =  new  JRDesignQuery();   
  43.         query.setText( "select userid,name,age,sex,password,department from person" );   
  44.         jasperDesign.setQuery(query);          
  45.          //addReportFiled(jasperDesign);   
  46.            
  47.          // Title   
  48.         JRDesignBand band =  new  JRDesignBand();   
  49.         band.setHeight( 20 );   
  50.         JRDesignStaticText staticText =  new  JRDesignStaticText();   
  51.            
  52.         staticText.setX( 200 );   
  53.         staticText.setY( 0 );   
  54.         staticText.setWidth( 200 );   
  55.         staticText.setHeight( 15 );   
  56.         staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);   //设置文本的对齐方式   
  57.         staticText.setStyle(normalStyle);   
  58.         staticText.setText( "杭州美创科技有限公司审计报表 " );   
  59.         band.addElement(staticText);           
  60.         JRDesignLine line =  new  JRDesignLine();        
  61.         line.setX( 0 );   
  62.         line.setY( 19 );   
  63.         line.setWidth( 500 );   
  64.         line.setHeight( 1 );   
  65.         line.setForecolor( new  Color( 0x99 , 0xFF , 0xFF ));   
  66.         band.addElement(line);   
  67.         jasperDesign.setTitle(band);   
  68.   
  69.          // Page header   
  70.         band =  new  JRDesignBand();   
  71.          //band.setHeight(20);   
  72.         band.setHeight( 0 );   
  73.         jasperDesign.setPageHeader(band);   
  74.   
  75.          // Column header   
  76.         band =  new  JRDesignBand();   
  77.         band.setHeight( 0 );   
  78.         jasperDesign.setColumnHeader(band);   
  79.          //detail   
  80.            
  81.           // 开始添加列字段   
  82.         String[] headers = { "USERID" , "NAME" , "AGE" , "SEX" , "PASSWORD" , "DEPARTMENT" };   
  83.         String[] alias = { "USERID" , "NAME" , "AGE" , "SEX" , "PASSWORD" , "DEPARTMENT" };   
  84.           int  Y =  20 ;   
  85.           int  columnHeaderfontSize =  10 ;   
  86.           int  fontSize =  8 ;   
  87.           int  textHeight =  19 ;   
  88.           int  textWidth =  180 ;   
  89.           int  detailHeight =  130 ;   
  90.          JRDesignBand detail =  new  JRDesignBand();   
  91.          detail.setHeight(detailHeight);   
  92.           for ( int  i= 0 ;i
  93.                 
  94.          }   
  95.          for ( int  i =  0 ;i
  96.             JRDesignStaticText jrstaticText =  new  JRDesignStaticText();     
  97.             jrstaticText.setText(headers[i]);    
  98.                
  99.             jrstaticText.setFontSize(columnHeaderfontSize);     
  100.             jrstaticText.setHeight(textHeight);     
  101.             jrstaticText.setWidth(textWidth);    
  102.                
  103.             jrstaticText.setY(Y * i);     
  104.             jrstaticText.setPdfFontName( "STSong-Light" );     
  105.             jrstaticText.setPdfEmbedded( true );     
  106.             jrstaticText.setPdfEncoding( "UniGB-UCS2-H" );     
  107.          //  jrstaticText.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER);     
  108.             jrstaticText.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_LEFT);     
  109.              /*jrstaticText.setLeftBorder(JRBaseLine.PEN_1_POINT);    
  110.             jrstaticText.setTopBorder(JRBaseLine.PEN_1_POINT);    
  111.             jrstaticText.setRightBorder(JRBaseLine.PEN_1_POINT);    
  112.             jrstaticText.setBottomBorder(JRBaseLine.PEN_1_POINT); */     
  113.             jrstaticText.setForecolor(Color.black);   
  114.          //  jrstaticText.setStretchType((byte)0);   
  115.          //  band.addElement(jrstaticText);     
  116.             detail.addElement(jrstaticText);   
  117.                
  118.              // 定义字段,注册字段   
  119.             JRDesignField field =  new  JRDesignField();   
  120.             field.setName(alias[i]);   
  121.             field.setValueClass(String. class );   
  122.             jasperDesign.addField(field);   
  123.                
  124.              // add text fields for displaying fields   
  125.             JRDesignTextField textField =  new  JRDesignTextField();   
  126.             JRDesignExpression expression =  new  JRDesignExpression();   
  127.             expression.setText( "$F{"  + alias[i] +  "}" );   
  128.             expression.setValueClass(String. class );   
  129.             textField.setExpression(expression);   
  130.             textField.setFontSize(fontSize);   
  131.             textField.setHeight(textHeight);   
  132.             textField.setWidth(textWidth);   
  133.             textField.setX(textWidth);   
  134.             textField.setY(Y*i);   
  135.             textField.setPdfFontName( "STSong-Light" );    
  136.             textField.setPdfEmbedded( true );   
  137.             textField.setPdfEncoding( "UniGB-UCS2-H" );     
  138.              //textField.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER);   
  139.             textField.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_LEFT);   
  140.              /*textField.setLeftBorder(JRBaseLine.PEN_1_POINT);  
  141.             textField.setTopBorder(JRBaseLine.PEN_1_POINT);  
  142.             textField.setRightBorder(JRBaseLine.PEN_1_POINT);  
  143.             textField.setBottomBorder(JRBaseLine.PEN_1_POINT);*/   
  144.              /*JRBaseLineBox baseLineBox = new JRBaseLineBox(textField);  
  145.             baseLineBox.getLeftPen().setLineColor(Color.black);  
  146.             baseLineBox.getLeftPen().setLineWidth(0);  
  147.             baseLineBox.getLeftPen().setLineStyle((byte)0);  
  148.             baseLineBox.getRightPen().setLineColor(Color.black);  
  149.             baseLineBox.getRightPen().setLineWidth(0);  
  150.             baseLineBox.getRightPen().setLineStyle((byte)0);  
  151.             baseLineBox.getTopPen().setLineColor(Color.black);  
  152.             baseLineBox.getTopPen().setLineWidth(0);  
  153.             baseLineBox.getTopPen().setLineStyle((byte)0);  
  154.             baseLineBox.getBottomPen().setLineColor(Color.black);  
  155.             baseLineBox.getBottomPen().setLineWidth(0);  
  156.             baseLineBox.getBottomPen().setLineStyle((byte)0);*/   
  157.                
  158.              //textField.setForecolor(new Color(0x99,0xFF,0xFF));   
  159.             textField.setForecolor(Color.black);   
  160.             textField.setStretchWithOverflow( true );   
  161.             detail.addElement(textField);   
  162.         }   
  163.             
  164.      //  jasperDesign.setColumnHeader(band);   
  165.            
  166.          //detail   
  167.         jasperDesign.setDetail(detail);   
  168.            
  169.          // Column footer   
  170.         band =  new  JRDesignBand();   
  171.         band.setHeight( 0 );   
  172.         jasperDesign.setColumnFooter(band);   
  173.          // Page footer   
  174.         band =  new  JRDesignBand();   
  175.         band.setHeight( 20 );   
  176.            
  177.         JRDesignLine line2 =  new  JRDesignLine();           
  178.         line2.setX( 0 );   
  179.         line2.setY(- 10 );   
  180.         line2.setWidth( 450 );   
  181.         line2.setHeight( 0 );   
  182.         line2.setForecolor( new  Color( 0x99 , 0xFF , 0xFF ));   
  183.         band.addElement(line2);   
  184.            
  185.         staticText =  new  JRDesignStaticText();   
  186.         staticText.setX( 0 );    
  187.         staticText.setY( 0 );   
  188.         staticText.setWidth( 100 );   
  189.         staticText.setHeight( 20 );   
  190.         staticText.setPdfFontName( "STSong-Light" );      
  191.         staticText.setPdfEmbedded( true );      
  192.         staticText.setPdfEncoding( "UniGB-UCS2-H" );     
  193.         SimpleDateFormat sdf =  new  SimpleDateFormat( "yyyy/MM/dd" );   
  194.         staticText.setText(sdf.format( new  Date()));   
  195.         band.addElement(staticText);   
  196.            
  197.            
  198.         JRDesignTextField textField =  new  JRDesignTextField();   
  199.         textField.setX( 450 );    
  200.         textField.setY( 0 );   
  201.         textField.setWidth( 100 );   
  202.         textField.setHeight( 20 );   
  203.         textField.setPdfFontName( "STSong-Light" );      
  204.         textField.setPdfEmbedded( true );      
  205.         textField.setPdfEncoding( "UniGB-UCS2-H" );     
  206.            
  207.         JRDesignExpression expression =  new  JRDesignExpression();   
  208.          expression =  new  JRDesignExpression();   
  209.          expression.setValueClass(java.lang.Integer. class );        
  210.          expression.setText( "$V{PAGE_NUMBER}" );   
  211.             
  212.         textField.setExpression(expression);   
  213.         band.addElement(textField);   
  214.         jasperDesign.setPageFooter(band);   
  215.            
  216.         System.out.println(expression.getText());   
  217.          // Summary   
  218.         band =  new  JRDesignBand();   
  219.         band.setHeight( 0 );   
  220.            
  221.         jasperDesign.setSummary(band);   
  222.   
  223.         System.out.println( "After Connection" );   
  224.   
  225.         JasperReport jasperReport = JasperCompileManager   
  226.                 .compileReport(jasperDesign);   
  227.         Map parameters =  new  HashMap();   
  228.         System.out.println( "After Parameter" );   
  229.         JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,   
  230.                 parameters, connection);   
  231.         System.out.println( "After Print" );   
  232.            
  233.         JasperExportManager.exportReportToHtmlFile(jasperPrint,  "D://test3.html" );   
  234.         JasperExportManager.exportReportToPdfFile(jasperPrint,  "D://test3.pdf" );   
  235.         JasperExportManager.exportReportToXmlFile(jasperPrint,  "D://test3.xml" false );   
  236.            
  237.         System.out.println( "After Export" );   
  238.   
  239.     }   
  240.   
  241.      private   void  addReportFiled(JasperDesign jasperDesign)  throws  JRException {   
  242.         JRDesignField field;   
  243.         field= new  JRDesignField();   
  244.         field.setName( "USERID" );   
  245.         field.setValueClass(java.math.BigDecimal. class );   
  246.         jasperDesign.addField(field);   
  247.            
  248.         field =  new  JRDesignField();   
  249.         field.setName( "NAME" );   
  250.         field.setValueClass(java.lang.String. class );   
  251.         jasperDesign.addField(field);   
  252.            
  253.         field =  new  JRDesignField();   
  254.         field.setName( "AGE" );   
  255.         field.setValueClass(java.lang.String. class );   
  256.         jasperDesign.addField(field);   
  257.            
  258.         field =  new  JRDesignField();   
  259.         field.setName( "SEX" );   
  260.         field.setValueClass(java.lang.String. class );   
  261.         jasperDesign.addField(field);   
  262.            
  263.         field =  new  JRDesignField();   
  264.         field.setName( "PASSWORD" );   
  265.         field.setValueClass(java.lang.String. class );   
  266.         jasperDesign.addField(field);   
  267.            
  268.         field =  new  JRDesignField();   
  269.         field.setName( "DEPARTMENT" );   
  270.         field.setValueClass(java.lang.String. class );   
  271.         jasperDesign.addField(field);   
  272.     }   
  273.   
  274.      private  JRDesignStyle setReportSytle(JasperDesign jasperDesign)   
  275.              throws  JRException {   
  276.         jasperDesign.setName( "SampleReport" );   
  277.         jasperDesign.setPageWidth( 595 );   
  278.         jasperDesign.setPageHeight( 842 );   
  279.         jasperDesign.setColumnWidth( 335 );   
  280.         jasperDesign.setColumnSpacing( 0 );   
  281.            
  282.         jasperDesign.setLeftMargin( 30 );   
  283.         jasperDesign.setRightMargin( 30 );   
  284.         jasperDesign.setTopMargin( 20 );   
  285.         jasperDesign.setBottomMargin( 20 );   
  286.          // whenNoDataType="NoPages"   
  287.         jasperDesign.setWhenNoDataType(JRReport.WHEN_NO_DATA_TYPE_BLANK_PAGE);   
  288.          // isTitleNewPage="false"   
  289.         jasperDesign.setTitleNewPage( false );   
  290.          // isSummaryNewPage="false"   
  291.         jasperDesign.setSummaryNewPage( false );   
  292.      //  jasperDesign.setOrientation(JRReport.ORIENTATION_PORTRAIT);   
  293.      //  jasperDesign.setPrintOrder(JRReport.PRINT_ORDER_VERTICAL);   
  294.            
  295.         JRDesignStyle normalStyle =  new  JRDesignStyle();   
  296.         normalStyle.setName( "Arial_Normal" );   
  297.         normalStyle.setDefault( true );   
  298.         normalStyle.setFontName( "Arial" );   
  299.         normalStyle.setFontSize( 12 );   
  300.         normalStyle.setPdfFontName( "STSong-Light" );   
  301.         normalStyle.setPdfEncoding( "UniGB-UCS2-H" );   
  302.         normalStyle.setPdfEmbedded( true );   
  303.         jasperDesign.addStyle(normalStyle);   
  304.   
  305.         JRDesignStyle boldStyle =  new  JRDesignStyle();   
  306.         boldStyle.setName( "Arial_Bold" );   
  307.         boldStyle.setFontName( "Arial" );   
  308.         boldStyle.setFontSize( 12 );   
  309.         boldStyle.setBold( true );   
  310.         boldStyle.setPdfFontName( "STSong-Light" );   
  311.         boldStyle.setPdfEncoding( "UniGB-UCS2-H" );   
  312.         boldStyle.setPdfEmbedded( true );   
  313.         jasperDesign.addStyle(boldStyle);   
  314.   
  315.         JRDesignStyle italicStyle =  new  JRDesignStyle();   
  316.         italicStyle.setName( "Arial_Italic" );   
  317.         italicStyle.setFontName( "Arial" );   
  318.         italicStyle.setFontSize( 12 );   
  319.         italicStyle.setItalic( true );   
  320.         italicStyle.setPdfFontName( "STSong-Light" );   
  321.         italicStyle.setPdfEncoding( "UniGB-UCS2-H" );   
  322.         italicStyle.setPdfEmbedded( true );   
  323.         jasperDesign.addStyle(italicStyle);   
  324.          return  normalStyle;   
  325.     }   
  326.   
  327.      private  Connection getConnection()  throws  SQLException {   
  328.         Connection connection = ReadConfig.getProduceInstance().getDataSource().getConnection();   
  329.          return  connection;   
  330.     }   
  331.   
  332. }   
  333.   
  334.      class  Vertical {   
  335.      public   static   void  main(String args[])  throws  Exception {   
  336.         Sample obj =  new  Sample();   
  337.   
  338.     }   
  339.   
  340. }  
package cn.hzmc.dynamicreport.example8;

import java.awt.Color;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRAlignment;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRReport;
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.base.JRBaseLineBox;
import net.sf.jasperreports.engine.base.JRBasePrintText;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignField;
import net.sf.jasperreports.engine.design.JRDesignLine;
import net.sf.jasperreports.engine.design.JRDesignQuery;
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.JasperDesign;

import com.capaa.pipe.config.ReadConfig;

class Sample {
	@SuppressWarnings("deprecation")
	Sample() throws Exception {
		
		Connection connection = getConnection();
		
		JasperDesign jasperDesign = new JasperDesign();
		JRDesignStyle normalStyle = setReportSytle(jasperDesign);
		
		JRDesignQuery query = new JRDesignQuery();
		query.setText("select userid,name,age,sex,password,department from person");
		jasperDesign.setQuery(query);		
		//addReportFiled(jasperDesign);
		
		// Title
		JRDesignBand band = new JRDesignBand();
		band.setHeight(20);
		JRDesignStaticText staticText = new JRDesignStaticText();
		
		staticText.setX(200);
		staticText.setY(0);
		staticText.setWidth(200);
		staticText.setHeight(15);
		staticText.setHorizontalAlignment(JRAlignment.HORIZONTAL_ALIGN_RIGHT);  //设置文本的对齐方式
		staticText.setStyle(normalStyle);
		staticText.setText("杭州美创科技有限公司审计报表 ");
		band.addElement(staticText);		
		JRDesignLine line = new JRDesignLine();		
		line.setX(0);
		line.setY(19);
		line.setWidth(500);
		line.setHeight(1);
		line.setForecolor(new Color(0x99,0xFF,0xFF));
		band.addElement(line);
		jasperDesign.setTitle(band);

		// Page header
		band = new JRDesignBand();
		//band.setHeight(20);
		band.setHeight(0);
		jasperDesign.setPageHeader(band);

		// Column header
		band = new JRDesignBand();
		band.setHeight(0);
		jasperDesign.setColumnHeader(band);
		//detail
		
		 // 开始添加列字段
		String[] headers = {"USERID","NAME","AGE","SEX","PASSWORD","DEPARTMENT"};
		String[] alias = {"USERID","NAME","AGE","SEX","PASSWORD","DEPARTMENT"};
		 int Y = 20;
		 int columnHeaderfontSize = 10;
		 int fontSize = 8;
		 int textHeight = 19;
		 int textWidth = 180;
		 int detailHeight = 130;
		 JRDesignBand detail = new JRDesignBand();
		 detail.setHeight(detailHeight);
		 for(int i=0;i

你可能感兴趣的:(jasperreports 动态报表代码)