1

我想从表中的碧玉报告中显示数据/值,从第一行到最后一行连续显示..但我只能显示具有字符串类型的值,如果记录是 BigDecimal 或 Double,它就无法工作

这是我显示的报告:

 Name       Amount    Price

 dendi      150.0     12.500
 patricia 
 Kelvin 
 Andrew

金额和价格刚刚显示了表格的最后一条记录,如果我在 java 项目中使用参数调用它们,该怎么办,例如:

paramater.put("name",name);
parameter.put("amount", amount);
4

1 回答 1

2

您可以使用JRMapCollectionDataSource,其中表中的每条记录都放入一个 Map 中,并且每个映射都添加到一个集合中。如果您使用参数,它将不会对每条记录重复。

例如,在您的情况下,您可以创建地图和地图集合

Collection<Map<String, Object>> records = new ArrayList<Map<String,Object>>();

Map<String, Object> record1 = new HashMap<String, Object>();

record1.put("Name","dendi");
record1.put("Amount",amount1); //amount1 is a BigDecimal for 150.0
record1.put("Price", price1); // price1 is a Double for 12.500

records.add(record1); // add each record to your map

Map<String, Object> record2 = new HashMap<String, Object>();
record2.put("Name","patricia");
record2.put("Amount",amount2); //amount2 is a BigDecimal 
record2.put("Price", price2); // price2 is a Double 

records.add(record2); // add each record to your map

在 jrxml 中定义与键相同的字段(名称、金额和价格 - 后两者为 BigDecimal/Double 类型)。Jasper Reports 库将负责从对象转换为 BigDecimal 或 Double。希望这可以帮助。

PS:此代码仅用于说明目的

于 2012-09-04T07:59:59.963 回答