Как использовать DynamicJasper для создания электронной таблицы Excel с формулами для промежуточных итогов столбцов? - PullRequest
2 голосов
/ 16 сентября 2010

Я хотел бы создать электронную таблицу Excel с использованием DynamicJasper, которая вычисляет промежуточные суммы столбцов с помощью формул.Например:

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

           Sales subtotal    $600.00 
           IT subtotal       $850.00

Я хочу, чтобы нижние две строки создавались таким образом, чтобы числа были результатом формул Excel, чтобы при редактировании часов промежуточные итоги изменились.

В настоящее время я сталкиваюсь с различными трудностями.Если в столбце Expenses указан тип double, DynamicJasper вставит $ и сделает его строкой.(Таким образом, добавление становится невозможным.) Но более фундаментальная проблема состоит в том, как определить ячейку как промежуточный итог ячеек над ней.

Я был бы рад, если бы кто-нибудь мог указать мне на пример, который просто насчитывал столбецДо тех пор, пока для этого используются формулы Excel.

1 Ответ

2 голосов
/ 26 ноября 2010

это будет делать что-то вроде этого, и это не проверяется или что-то еще:

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 вы должны знать, какие строки в столбце вы вычисляете.Как правило, у меня есть 2d массив объектов для данных, и я могу по полям карты определить все, что мне нужно.

По моему мнению, довольно много работы, но я не очень знаком с dynamicJasper, используя его некоторое времясейчас ... Может быть, для формата xls вам даже не нужно getBigDecimalFormatter, просто b1.addFooterVariable().

Но с другой стороны, если вы просто создаете простую таблицу данных, а затем пользователь в Excel с помощью одной кнопки создает суммы, в любом случае это не так уж много работы:)

Берегите себя, Nb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...