2016-08-28 1 views
2

В настоящее время я пишу простое приложение java, которое считывает данные из csv в jTable и генерирует отчет (.jrxml -> .jasper).При получении данных из JTable следует использовать параметры в методе fillReport?

Я сбор параметров в ArrayList карт так:

[{Description = 'qwerty', Title = 'asdfg', Amount = 1800}, 
{Description = 'uiop', Title = 'zxcv', Amount = 2500},  
{Description = 'desc', Title = 'mnb', Amount = 510}] 

Как я могу передать его методу fillReport (это требует java.util.Map)? Или, может быть, мне нужно использовать поля вместо параметров?

EDIT: Здесь Вы ожидали выход - заполненный JTable и данные из него в jasperView:

enter image description here

Вот мой код - я получаю DataSource из JTable:

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 не понимает массивы hashmaps. Как я могу исправить это?

+0

@PetterFriberg Я попытался улучшить свой вопрос, может быть, теперь легче понять точную проблему? – gooornik07

+0

Да, спасибо, вам не нужно использовать параметры, см. Ответ, у вас уже есть все данные в вашем источнике данных, который вы передаете в fillManager –

ответ

2

Вы делаете не нужно использовать параметры, у вас уже есть данные в вашем dataSource, что вы уже переходя к JasperFillManager

Вам просто нужно определить поля с таким же именем и классом, как ваш столбцы в модели JTabledataTable.getModel() в вашем jrxml (отчет).

Пример (ColumnName является col1 и это java.lang.String)

<field name="col1" class="java.lang.String"/> 

яшмовых-отчеты будут итерация подробно полосы всех строк в этой модели и установить текущее значение столбцов к полям, следовательно, вы должны поставьте textField, ссылаясь на поле $F{col1} в полосе деталей.

+0

. Поэтому мне нужно изменить все параметры $ P (параметры) в моем проекте отчета $ F (поля) и dataSource предоставят ответ. Еще один метод queston - fillReport требует: отчет о яшме, ПАРАМЕТРЫ и dataSource. Что мне нужно сделать со вторым параметром этого метода? – gooornik07

+1

Идентификатор данных (3 параматера) итерации по подробному диапазону, параметр (2 парама) - это фиксированные значения, которые вы можете отправить в отчет, пример заголовка отчета, путь к изображениям и т. Д. –

+0

Понимание разницы между параметром и полем, в дизайне отчета решена моя проблема :) Теперь JasperViewer показывает, что я ожидал :) – gooornik07