无法使用spudsoft-birt-excel-emitters生成BIRT报告 - Error.InvalidEmitterID

时间:2017-06-05 02:00:15

标签: java excel eclipse birt birt-emitter

我使用的是BIRT Runtime引擎4.2.1&遵循这个link

1.我已将以下jar移至birt-runtime-4_2_1 \ ReportEngine \ lib文件夹。 uk.co.spudsoft.birt.emitters.excel_0.8.0.201310230652 commons-codec-1.5 dom4j-1.6.1 poi-3.9-20121203 poi-ooxml-3.9-20121203 poi-ooxml-schemas-3.9-20121203 slf4j-api-1.6.2 stax-api-1.0.1 xmlbeans-2.3.0 2.更改代码以使用spudsoft发射器.public类RunReport {

public static void runReport() throws Exception {

    IReportEngine engine = null;
    EngineConfig config = new EngineConfig();        
    config.setEngineHome("C:/BIRT/BIRT_2_6_1/birt-runtime-4_2_1/birt-runtime-4_2_1/ReportEngine");
     Platform.startup(config);        
    IReportEngineFactory factory = (IReportEngineFactory) Platform
            .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);        
    engine = factory.createReportEngine(config);
    IReportRunnable design = engine.openReportDesign("C:/reports/csvReport2.rptdesign");
    IRunAndRenderTask task = engine.createRunAndRenderTask(design);     
    IRenderOption options = new RenderOption(); 
    options.setOutputFormat("xls");
    options.setOutputFileName("C:/reports/native.xls");
    options.setEmitterID( "uk.co.spudsoft.birt.emitters.excel.XlsEmitter" );
    task.setRenderOption(options);     
    task.run();
    task.close();

    Platform.shutdown();
    System.out.println("Report Generated Sucessfully!!");
}`

执行报告时出现以下错误。

Jun 05, 2017 9:32:33 AM org.eclipse.birt.report.engine.api.impl.EngineTask setupRenderOption
SEVERE: Error.InvalidEmitterID
org.eclipse.birt.report.engine.api.EngineException: EmitterID uk.co.spudsoft.birt.emitters.excel.XlsEmitter for render option is invalid.
    at org.eclipse.birt.report.engine.api.impl.EngineTask.setupRenderOption(EngineTask.java:2022)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.doRun(RunAndRenderTask.java:96)
    at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:77)
    at RunReport.runReport(RunReport.java:49)
    at RunReport.main(RunReport.java:58)
Picked up _JAVA_OPTIONS:  -Xmx512M

是否有任何我想念的步骤或配置!

注意:我尝试使用spudsoft发射器和默认发射器一样,在打开excel时出现Error提示。

File format and extension of 'orders.xls' don't match. The file could be corrupted or unsafe. Unless you trust its source, don't open it. Do you want to open it anyway?

2 个答案:

答案 0 :(得分:0)

我做了几项改动让它发挥作用!

第一步更改了代码 - 将默认 IRenderOption 替换为 EXCELRenderOption

import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.*;
public class RunReport {    
    public static void runReport() throws Exception {        
        IReportEngine engine = null;
        EngineConfig config = new EngineConfig();        
        config.setEngineHome("C:/Projects/My Works Related/BIRT/BIRT_2_6_1/birt-runtime-4_2_1/birt-runtime-4_2_1/ReportEngine");
         Platform.startup(config);        
        IReportEngineFactory factory = (IReportEngineFactory) Platform
                .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);        
        engine = factory.createReportEngine(config);
        IReportRunnable design = engine.openReportDesign("C:/Projects/My Works Related/Backup From My System and Proton/Backup from Proton/SEM/rk/rk/birt-runtime-Eclipse _workspace2_6_2/eclipse-reporting-helios-SR2-win32/workSpace/ExecuteCSVReport/reports/csvReport2.rptdesign");
        IRunAndRenderTask task = engine.createRunAndRenderTask(design);     
        EXCELRenderOption excelOptions = new EXCELRenderOption();
        excelOptions.setOutputFormat("xls");
        excelOptions.setOutputFileName("C:/Projects/My Works Related/Backup From My System and Proton/Backup from Proton/SEM/rk/rk/birt-runtime-Eclipse _workspace2_6_2/eclipse-reporting-helios-SR2-win32/workSpace/ExecuteCSVReport/reports/native.xls");
        excelOptions.setEmitterID( "uk.co.spudsoft.birt.emitters.excel.XlsEmitter" );
        task.setRenderOption(excelOptions);     
        task.run();
        task.close();        
        Platform.shutdown();
        System.out.println("Report Generated Sucessfully!!");
    }
    public static void main(String[] args) {
        try {
            runReport();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

第二步已删除位于路径org.eclipse.birt.runtime_4.2.1.v20120918-1113.jar的{​​{1}}中的poi目录,以解决POI冲突问题。

答案 1 :(得分:0)

在我看来,您需要使用4.4.2版本的spudsoft发射器;

excelOptions.setOutputFormat("xls_spudsoft");