2

数式を使用して列の小計を計算する DynamicJasper を使用して Excel スプレッドシートを作成したいと考えています。例えば:

Employee   Department        Expenses
----------------------------------------
Alice      Sales             $600.00
Bob        IT                $400.00
Charlie    IT                $450.00

           Sales subtotal    $600.00 
           IT subtotal       $850.00

下の 2 行は、数値が Excel 数式の結果となるように作成して、時間を編集すると小計が変わるようにしたいと考えています。

現在、様々な困難に直面しています。Expenses列に typeを設定するとdouble、DynamicJasper が挿入$して文字列にします。(したがって、加算は不可能になります。) しかし、より基本的な問題は、セルをその上のセルの小計となるように定義する方法です。

Excel の数式を使用してそれを達成している限り、誰かが単純に列を合計した例を教えていただければ幸いです。

4

1 に答える 1

2

これは次のようなことを行いますが、これはテストされていません。

GroupBuilder gb1 = new GroupBuilder("column_name");

gb1.addFooterVariable(frb.getColumn("column_name_with_amounts"),CALCULATION.EMPTY,style_lala,getBigDecimalFormatter());

getBigDecimalFormatter は次のとおりです。

private DJValueFormatter getBigDecimalFormatter(f) {
    return new DJValueFormatter(){

        public Object evaluate(Object value, Map fields, Map variables, Map parameters) {

            return "here is excel code for calculating like sum=SUM(A1:A15)";
        }

        public String getClassName() {
            return String.class.getName();
        }};
}

それはそれについてですが、注意してください: レポートを作成するデータを完全に制御する必要があります。getBigDecimalFormatterたとえば、計算している列の行を知る必要があります。通常、データ用の 2 次元オブジェクト配列があり、Map フィールドから必要なものをすべて決定できます。

私の意見では、かなりの作業が必要ですが、dynamicJasper にはあまり詳しくありません。しばらくの間、それを使用しています...おそらく xls 形式の場合はgetBigDecimalFormatterb1.addFooterVariable().

しかし一方で、データの単純なテーブルを作成するだけで、Excel のユーザーが 1 つのボタンで合計を作成する場合、とにかくそれほど多くの作業はありません:)

気をつけて、Nb

于 2010-11-26T11:47:10.987 に答える