我正在使用Birt Runtime Engine 4.2.1&遵循此链接。
1.我已将以下罐子移至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 Emitter的代码。
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 Emitter,在打开Excel时,以下错误提示。
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?
我已经完成了几个更改以使其起作用!
第一步更改了代码 - 替换默认 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();
}
}
}
步骤两步删除了位于路径birt-runtime-4_2_1ReportEnginelib
中以解决POI冲突问题的org.eclipse.birt.runtime_4.2.1.v20120918-1113.jar
中的POI目录。
用Spudsoft Emitter的4.4.2版本向我看;
excelOptions.setOutputFormat("xls_spudsoft");