我目前正在编写简单的java应用程序,它将数据从csv读取到jTable并生成报告(.jrxml - > .jasper)。
我收集地图的ArrayList中的参数,如下所示:
[{Description = 'qwerty', Title = 'asdfg', Amount = 1800},
{Description = 'uiop', Title = 'zxcv', Amount = 2500},
{Description = 'desc', Title = 'mnb', Amount = 510}]
如何将其传递给fillReport方法(它需要java.util.map)? 或者我可能必须使用字段而不是参数?
编辑: 这里你已经期望在jasperView中输出 - 填充jTable和数据:
这是我的代码 - 我从jTable获取dataSource:
JRDataSource dataSource = new JRTableModelDataSource(dataTable.getModel());
try {
JasperCompileManager.compileReportToFile("citibank_customReport.jrxml");
JasperPrint print = JasperFillManager.fillReport("citibank_customReport.jasper", listOfParameters, dataSource);
JasperViewer.viewReport(print, true);
}
不幸的是, fillReport方法无法理解哈希映射数组。我怎么能纠正它?
答案 0 :(得分:2)
您不需要使用参数,您已经在dataSource
中的数据已经传递给JasperFillManager
您只需要在jrxml(报告)的JTable
模型dataTable.getModel()
中定义与您的列具有相同名称和类别的字段。
示例(columnName为col1
且为java.lang.String
)
<field name="col1" class="java.lang.String"/>
jasper-reports将详细迭代此模型中的所有行并将当前列值设置为字段,因此您应该将textField
引用字段$F{col1}
放入详细信息区域。 / p>