Не удалось создать отчет BIRT с помощью spudsoft-birt-excel-emitters - Error.InvalidEmitterID
Я использую BIRT Runtime engine 4.2.1 и перехожу по этой ссылке.
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 emitter. Открытый класс 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 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?
2 ответа
Я сделал пару изменений, чтобы это заработало!
Шаг первый Измененный код - заменить 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();
}
}
}
Шаг второй Удалил каталог poi в org.eclipse.birt.runtime_4.2.1.v20120918-1113.jar
который был помещен в путь birt-runtime-4_2_1\ReportEngine\lib
решить проблему конфликта POI.
Похоже, мне нужна версия spudsoft emitter 4.4.2;
excelOptions.setOutputFormat("xls_spudsoft");