加载导出的文件以进行查看

时间:2014-06-27 10:51:13

标签: java jasper-reports

我使用 JasperReports 库5.6.0

我厌倦了编程:
VIEWER(JRViewer)PDF ---> XML ---> PDF VIEWER(JRViewer)

  1. 步骤 - 将生成的raport视图导出到xml文件
  2. 步骤 - 导出文件xml转换为pdf并显示JRViewer
  3. 但我对第2步有问题,

    // file is variable xml file generated from step 1
    
        JasperDesign design = JRXmlLoader.load(file);
        JasperReport report = JasperCompileManager.compileReport(design);
        JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), new JRBeanCollectionDataSource(b)); 
    
        JasperPrintManager.printReport(print, false);
    

    我收到了错误:

    java.lang.NullPointerException
        at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:323)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:284)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:273)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:218)
        at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:202)
        at pl.opencare.wydruki.PrintFunctions$1.actionPerformed(PrintFunctions.java:460)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    

2 个答案:

答案 0 :(得分:0)

我看到此错误的唯一方法是,如果JRXmlLoader.load( file )中使用的文件在某种程度上是错误的(很可能是空的或者不是正确的.jrxml文件)。如果是这种情况,您未描述的“第一步”必须包含错误。

@Answer包含详细信息(我认为编辑问题会更适合提供更多问题的格式)

还有一个问题。我不知道,你所拥有的是JasperPrint实例,它代表已填写的报告。根据{{​​3}}导出,它创建了.jrpxml,并且可以使用JRXmlExported Documentation再次作为JasperPrint实例进行解析。尝试将填充的报告加载为JasperDesign以再次填充它可能会产生错误(显然确实如此)。是否有任何特殊原因导致您无法对用于创建报告的.jrxml文件或JasperDesign实例进行操作?

答案 1 :(得分:0)

代码第1步:

// p is my report
JasperPrint p = ..........

StringBuffer xml = new StringBuffer();

JRXmlExporter xmlExporter = new JRXmlExporter();
xmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, p);
xmlExporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, xml);
xmlExporter.exportReport();

File file = File.createTempFile("temp", ".xml"); 
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
bw.write(xml.toString());
bw.close();

该文件不为空我可以显示它的临时目录。

步骤2中的

sbove错误java.lang.NullPointerException,netbeans show line

JasperDesign design = JRXmlLoader.load(file);