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

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。
      先看看效果。
  
1)    准备数据源,这里使用XML文件(使用UTF8编码)作为数据源。
 1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值