如何使用DynamicJasper创build具有列小计的公式的Excel电子表格?

我想生成一个使用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 

我希望底部两行的生成方式使得这些数字是Excel公式的结果,所以如果编辑了小时,小计就会改变。

目前我遇到各种困难。 如果我将Expenses列设置为doubletypes,那么DynamicJasper将插入$并将其设置为一个string。 (因此,增加是不可能的。)但是一个更基本的问题是如何定义一个单元格作为它上面的单元格的小计。

如果有人能够给我一个简单的总结一个专栏的例子,只要用excel公式来实现它,我会很高兴。

它会做这样的事情,这是没有testing或任何事情:

 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(); }}; } 

多数民众赞成在此,但要小心:你必须完全控制你正在创build的报告数据。 在getBigDecimalFormatter例如,你必须知道你正在计算列中的哪些行。 一般来说,我有2d的数据对象数组,我可以从地图字段确定我需要的一切。

在我看来是相当多的工作,但我不熟悉dynamicJasper,现在使用它一会儿…也许对于xls格式,你甚至不需要getBigDecimalFormatter ,只是b1.addFooterVariable()

但另一方面,如果你只是创build普通的数据表,然后在Excel中的用户用一个button创build总和,这不是多less工作:)

保重,呃

    Interesting Posts