Eclipse BIRTを使ってみる (5) - Excelで出力 -

2012-11-22T00:00:00+00:00 Eclipse BIRT Java

EXCELRenderOptionっていうのがあるので、これを使えばExcelを出力可能。だけど、これを使うとチャートがレンダリングされないっていうのがあったので、NativeXlsっていうエミッターを使う事で対処可能らしい(正確にはOpenDocument Spreadsheetで出さない物っぽい)

とりあえずrtpdesignに関しては適当にデータベースに接続して、集計の結果をチャートで出すっていう感じで作っておく

NativeXlsをインストール

http://code.google.com/a/eclipselabs.org/p/native-excel-emitter-birt-plugin からダウンロードしてインストールする。で今回Mavenを使うので、そのjarのライブラリ自体をローカルMavenリポジトリ?にインストールする

mvn install:install-file \
    -Dfile=lib/org.eclipse.birt.report.engine.emitter.nativexls_1.0.0.201110122114.jar \
    -DgroupId=org.eclipse.birt.engine \
    -DartifactId=emitter-nativexls \
    -Dversion=1.0.0_201110122114 \
    -Dpackaging=jar

groupIdとかartifactIdとかは自分で決めていいかと。でやったらpom.xmlに追加しておく

<?xml version="1.0" ?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4.0.0.xsd">
    <dependencies>
        <!-- 追加 -->
        <dependency>
            <groupId>org.eclipse.birt.engine</groupId>
            <artifactId>emitter-nativexls</artifactId>
            <version>1.0.0_201110122114</version>
        </dependency>
    </dependencies>
</project>

Client.java

EXCELRenderOptionに書き換えつつレポート出力する際のエミッターIDをNativeXlsな方向へ向けないといけないので

import org.eclipse.birt.report.engine.api.EXCELRenderOption;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.ReportEngine;

public class Client {
    public static void main(String[] args) throws Exception {
        EngineConfig config = new EngineConfig();

        ReportEngine engine = new ReportEngine(config);
        IReportRunnable design = engine.openReportDesign("sample.rptdesign");

        IRunAndRenderTask task = engine.createRunAndRenderTask(design);

        EXCELRenderOption options = new EXCELRenderOption();
        options.setOutputFormat("xls");
        options.setEmitterID("org.eclipse.birt.report.engine.emitter.nativexls"); // EmitterIDをNativeXlsなのに修正

        task.setRenderOption(options);
        task.run();
        task.close();
    }
}

つー感じで修正。んで実行するとレポートとして

WebHDFSを使ってみる HDFS操作メモ