我使用的是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?
答案 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");