从JTable获取数据时,我应该在fillReport方法中使用参数吗?

时间:2016-08-28 12:35:45

标签: java jtable jasper-reports

我目前正在编写简单的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和数据:

enter image description here

这是我的代码 - 我从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方法无法理解哈希映射数组。我怎么能纠正它?

1 个答案:

答案 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>