Java+JasperReports非web工程的报表导出与打印

一、首先准备好报表所需的模版,模版采用IReport完成,在此不再赘述,模版路径:C:\cdetResource\jasper,包括report.jasper、report.jrxml两个文件。

二、准备好数据源文件,源文件采用XML格式文件,生产XML格式的文件方法不再赘述,XML文件路径:C:\cdetResource\xml,包括itemDetail.xml文件。XML的内容格式

为:"/ArrayList/AnalyItemDetail"。

三、导出

       首先定义相关的全局变量:

   //定义全局文件路径静态变量
    private static final String ITEM_XML_PATH = "C:\\cdetResource\\xml\\itemDetail.xml";
	
    private static final String REPORT_JASPER_PATH = "C:\\cdetResource\\jasper\\cdet.jasper";
	
   private static final String PDF_REPORT_ORDER_PATH = "C:\\cdetResource\\report\\report.pdf";
	
   private static final String DOC_REPORT_ORDER_PATH = "C:\\cdetResource\\report\\report.doc";
	
   //XML数据文件的数据模式和层级静态变量
    private static final String RECORD_PATH = "/ArrayList/AnalyItemDetail";

      其次导出:

      1、导出PDF格式

	//定义数据源文件
	File dsFile = new File(ITEM_XML_PATH);
								
	//准备数据源
	JRXmlDataSource jrxmlds = new JRXmlDataSource(dsFile,RECORD_PATH);
								
	JasperReport report = (JasperReport)JRLoader.loadObjectFromLocation(REPORT_JASPER_PATH);
								
	//直接将装填过程生成的文档导出到pdf格式
	JasperRunManager.runReportToPdfFile(REPORT_JASPER_PATH, reportMap);
					            
	//填充报表
	JasperPrint print = JasperFillManager.fillReport(report, reportMap, jrxmlds);

	//导出PDF文件
	JasperExportManager.exportReportToPdfFile(print,PDF_REPORT_ORDER_PATH);

       2、导出RTF格式(DOC)

	File dsFile = new File(ITEM_XML_PATH);
								
	//准备数据源
	JRXmlDataSource jrxmlds = new JRXmlDataSource(dsFile,RECORD_PATH);
								
	JasperReport report = (JasperReport)JRLoader.loadObjectFromLocation(REPORT_JASPER_PATH);
								
	//填充报表
	JasperPrint print = JasperFillManager.fillReport(report, reportMap, jrxmlds);
					            
	JRExporter exporter = new JRRtfExporter();
	exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
	exporter.setParameter(JRExporterParameter.OUTPUT_FILE, new File(DOC_REPORT_ORDER_PATH));
	//导出	            
	exporter.exportReport();

     最后打印:

	//定义数据源文件
	File dsFile = new File(ITEM_XML_PATH);
								
	//准备数据源
	JRXmlDataSource jrxmlds = new JRXmlDataSource(dsFile,RECORD_PATH);
								
	JasperReport report = (JasperReport)JRLoader.loadObjectFromLocation(REPORT_JASPER_PATH);
								
	//填充报表
	JasperPrint print = JasperFillManager.fillReport(report, reportMap, jrxmlds);
					            
	JasperPrintManager.printReport(print, true);


      注:这是非web工程的导出和打印,HTML、XML格式的报表跟此类似。


      附:XML文件生成程序代码:

//将List转化成XML格式文件,作为报表的数据源
	String encoding = "GB2312";
  	StringWriter outputWriter = new StringWriter();
     	outputWriter.write("<?xml version='"+1.0+"' encoding='"+encoding+"' ?>");					    	
	BeanWriter beanWriter = new BeanWriter(outputWriter);
					    	
	beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
					    	
	beanWriter.getBindingConfiguration().setMapIDs(false);
					    	
	beanWriter.enablePrettyPrint();
					    	
	try {
		beanWriter.write(list);
	} catch (IOException e1) {
		e1.printStackTrace();
	} catch (SAXException e1) {
		e1.printStackTrace();
	} catch (IntrospectionException e1) {
		e1.printStackTrace();
	}
	String xmlFilePath=ITEM_XML_PATH;
	File xmlFile=new File(xmlFilePath);
					    	
	try {
		if(!xmlFile.exists()){
		xmlFile.createNewFile();
	}
								
		FileWriter fw = new FileWriter(xmlFilePath);
		fw.write(outputWriter.toString().toCharArray());
								
		fw.flush();
		outputWriter.close();
	} catch (IOException e1) {
		e1.printStackTrace();
	}



 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值