0
点赞
收藏
分享

微信扫一扫

JasperReport那些事儿(一)——iRep…


http://www.blogjava.net/heis/archive/2009/02/16/254978.html



xml编码问题



field变量的描述信息一定要填






使用XML作为数据源的例子


private static void printXMLSource()
  {
   String jrxml = "D:\\jasper_xml.jrxml";
   String jasperPath = "D:\\temp\\iReport-1.3.3\\jasper_xml.jasper";
   try
   {
    JasperCompileManager.compileReportToFile(jrxml);
    
    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperPath);
    
    Map parameters = new HashMap(); 
 
  parameters.put(JRXPathQueryExecuterFactory.XML_DATE_PATTERN, "yyyy-MM-dd");
    parameters.put(JRXPathQueryExecuterFactory.XML_NUMBER_PATTERN, "#,##0.##");
    parameters.put(JRXPathQueryExecuterFactory.XML_LOCALE, Locale.CHINESE);
    parameters.put(JRParameter.REPORT_LOCALE, Locale.CHINA);
    parameters.put("SUBREPORT_DIR", "D:\\temp\\iReport-1.3.3\");只表路径
     
 
  Document document = readStringDocument(readFile("D:\\person2.xml"));
    
    parameters.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, document);
    
    JasperFillManager.fillReportToFile(jasperPath, parameters);
    JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters);
    
    //使用JRPdfExproter导出器导出pdf  
             JRPdfExporter exporter = new JRPdfExporter();  
            
             // 设置JasperPrintList  
             exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, print); 
    
             FileOutputStream fos = new FileOutputStream("D:\\jasper_xml2.pdf");
           
             // 设置导出流
             exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, fos);
            
             // 开始导出
             exporter.exportReport();
            
             fos.flush();
             fos.close();
             fos = null;
   } catch (Throwable e)
   {
     e.printStackTrace();
     System.out.println("==============" + e.toString());
   }
  }




读取XML文件,在IMB系统中要用这种方法读取才行


public static String readFile(String filepath)
  {
   String result = "";
   StringBuffer sBuffer;
   try
   {
    sBuffer = new StringBuffer();
    FileInputStream fis=new FileInputStream(filepath);
    BufferedInputStream bis=new BufferedInputStream(fis);
    String tempStr;
    byte[] b = new byte[1024];
    int i = 0;
    while ((i = bis.read(b)) > 0)
    {
        tempStr=new String(b,0,i,"utf-8");指定当前数据的编码
        sBuffer.append(tempStr);
    }
    result = sBuffer.toString();
   } catch (FileNotFoundException e)
   {
    e.printStackTrace();
   } catch (IOException e)
   {
    e.printStackTrace();
   } 
 
 return result;
  }





Parameter作为数据源


private static void printFirst()
  {
   String jrxml = "D:\\passwordEnvelope_first.jrxml";
   String jasperPath = "D:\\passwordEnvelop_first.jasper";
   try
   {
    JasperCompileManager.compileReportToFile(jrxml);
    System.out.println("===== jasper create finished ===contractName=");
    
    JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperPath);
    
    Map parameters = new HashMap(); 
 
  parameters.put("head_img","D:\\headsh.jpg");
    parameters.put("contractCode","12344****6中午");
    parameters.put("password","111****1116我测试");
    parameters.put("company","上海南京路");
    parameters.put("line_img","D:\\project\\AIA_ETA\\line.jpg");
    
    parameters.put("contractName","中华世纪旅行社");
    
    JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
    
    //使用JRPdfExproter导出器导出pdf  
             JRPdfExporter exporter = new JRPdfExporter();  
            
             // 设置JasperPrintList  
             exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, print); 
            
             FileOutputStream fos = new FileOutputStream("D:\\passwordEnvelope_first.pdf");
           
             // 设置导出流
             exporter.setParameter(JRPdfExporterParameter.OUTPUT_STREAM, fos);
            
             // 开始导出
             exporter.exportReport();
            
             fos.flush();
             fos.close();
             fos = null;
   } catch (Throwable e)
   {
     e.printStackTrace();
     System.out.println("==============" + e.toString());
   }
  }




如果你还不知道jasperreport和ireport,那你可以参考我的上一篇文章,或者谷歌百度一下。好了,废话少说,Let’s start,Go!
      我的环境是iReport3.0+JDK6.0。
      先看看效果。
  

JasperReport那些事儿(一)——iRep…_数据源


1)    准备数据源,这里使用XML文件(使用UTF8编码)作为数据源。


举报

相关推荐

0 条评论