从JasperViewer保存到Excel

6
我正在使用JasperViewer向用户展示报告,并能够导出为pdfwordExcel格式。问题在于,保存为Excel时会提示错误:
Exception in thread "AWT-EventQueue-0" java.lang.VerifyError: (class: net/sf/jasperreports/engine/export/JRXlsExporter, 
method: createMergeRegion signature: (Lnet/sf/jasperreports/engine/export/JRExporterGridCell;IILorg/apache/poi/hssf/usermodel/HSSFCellStyle;)V) Incompatible argument to function
        at net.sf.jasperreports.view.save.JRSingleSheetXlsSaveContributor.save(JRSingleSheetXlsSaveContributor.java:104)
        at net.sf.jasperreports.swing.JRViewerToolbar.btnSaveActionPerformed(JRViewerToolbar.java:407)

这是我用来展示报告的代码:

这里是我展示报告的代码:

  public void showReport() throws SQLException {


        RNVehicle rnVehicle = new RNVehicle();
        vehicles.clear();
        vehicles= rnVehicle.getVehiculos();

        //Path to your .jasper file in your package
        String reportName = "reports/ReportVehicles.jasper";

        //Get a stream to read the file
        InputStream is = this.getClass().getClassLoader().getResourceAsStream(reportName);

        try {

            JasperPrint jp = JasperFillManager.fillReport(is, null, new JRBeanCollectionDataSource(vehicles));

            //Viewer for JasperReport
            JRViewer jv = new JRViewer(jp);

            //Insert viewer to a JFrame to make it showable
            JFrame jf = new JFrame();
            jf.getContentPane().add(jv);
            jf.validate();
            jf.setVisible(true);
            jf.setSize(new Dimension(1020, 755));
            jf.setLocation(0, 0);
            jf.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        } catch (JRException ex) {
            ex.printStackTrace();
        }
    }

我很着急 :( ,为什么它不能运行?我应该做什么改变?或者我应该导入哪些库来使项目运行起来呢?
目前我已经有了:poi-3.6.jar(JR发行版附带的版本),我也尝试过之前的版本,3.5和3.2,并且所有的一切都正常工作,但只适用于HTML、PDF和Word,不适用于Excel。
任何在此方面的见解都将是有用的。

我不认为这会解决你的直接问题,但是根据我对JR文档的阅读,没有必要获取流来读取.jasper文件。只要变量直接指向该文件,就可以直接将文件作为参数传递。也就是说,只需将reportName传递给JasperFillManager.fillReport()即可。 - Sean
你能否提供JRXlsExporter的JavaDoc链接? - Zian Choy
那就是我所做的,但我还没有收到任何回复。 - eddy
4个回答

2
您需要在您的项目中添加"poi-3.10.1.jar"。

1
如果您可以将其转换为CSV格式并在Notepad++或类似的软件中打开,可以使用查找和替换功能将两个逗号(,,)替换为破折号等占位符。这种情况曾经让我困扰过。之后,您可以将其导入到所选语言的数组中,并从那里进行操作。

0

需要使用jxl库进行Excel导出。 通常JasperReports需要commons-collections、commons-beanutils和commons-digester。


0

正如Adel所说,它与特定的“poi-3.10.1.jar”版本配合良好。

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.10.1</version>                        
    </dependency>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接