我如何在java中加入已编译的jasper文件和我的项目?

时间:2011-03-09 08:23:35

标签: java

我在iReport中设计了我的项目,并且我已成功编译。现在我想添加已编译的jasper文件以添加到我的java项目中。愿任何人帮助我吗?

2 个答案:

答案 0 :(得分:0)

只需将它们添加到源树中的某个包中即可。您的构建过程或IDE应将它们与您的类一起复制到您的classes目录或生成的jar文件中。然后,报告可能会加载Class.getResource()Class.getResourceAsStream()

答案 1 :(得分:0)

以下是从两个组合框中获取两个值所需的代码,将它们添加到HashMap并将地图传递给iReport。这个参数(例如“ storeName ”和“ actionCode ”)用于指定存储在iReport中的查询的值。报告jasper文件是“ ../ ireps / AccessCounter.jrxml ”。观众是一个JDialog。如果没有要传递给报表的参数,请跳过map.put。 con是与数据库的连接。

确保在路径中包含必要的jar文件。

try {
    String shopName = jComboBox1.getSelectedItem().toString();
    String actionCode = jComboBox2.getSelectedItem().toString();
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("storeName", shopName);
    map.put("actionCode", actionCode);

    URL reportFileURL = getClass().getResource("../ireps/AccessCounter.jrxml");
    File reportFile = new File(reportFileURL.toURI());
    JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map, con);
    JasperViewer jv = new JasperViewer(jasperPrint);
    JDialog viewer = new JDialog(this, "Batch Report", true);
    viewer.setBounds(jv.getBounds());
    viewer.getContentPane().add(jv.getContentPane());
    viewer.setResizable(true);
    viewer.setIconImage(jv.getIconImage());
    viewer.setVisible(true);
} catch (JRException exc) {
   System.out.println(exc.getMessage());
} catch (URISyntaxException exs) {
   System.out.println(exs.getMessage());
}