У меня есть отчет из одной страницы, созданный с использованием адаптера данных CSV. В отчете у меня есть некоторые данные и 2 таблицы, где оба берут данные из файла CSV. В первый момент у меня возникла проблема с отображением таблицы: я поместил некоторые данные в myTables, но ничего не показывалось. Я смог решить эту проблему, используя и отображая REPORT_PARAMETER_MAP в разделе таблицы ParameterMap. Теперь у меня та же проблема, но вызов myReport из java программы. В этом последнем я создал источник данных, который отправляю в качестве параметра для отчета. В результате отображаются все данные, кроме двух таблиц. В Jaspersof Studio я определил параметр DS, где его класс: « new net .sf.jasperreports.engine.data.JRCsvDataSource », и я передаю его в myTables следующим образом:
введите описание изображения здесь
В java У меня есть:
public JasperPrint createReport(InputStream inp) throws SQLException, OutputNotFoundException, OutputEnvelopeCreationException
{
JasperPrint jasperPrint = null;
try
{
String[] columnNames = new String[]{"xxx3", "xxx4", "xxx2", "xxx1"];
JRCsvDataSource ds = new JRCsvDataSource(inp);
ds.setFieldDelimiter(';');
ds.setUseFirstRowAsHeader(true);
ds.setColumnNames(columnNames);
_parameters.put("DS", ds);
jasperPrint = JasperFillManager.fillReport(_jasperReport, _parameters, ds);
}
catch (Exception e)
{
putKOReport(outputStreamEnvelopeFactory,e.toString().getBytes());;
e.printStackTrace();
writeErrorLog("OPS: readReportConfiguration " + e.getMessage() + " " + e);
throw new RuntimeException(e);
}
return jasperPrint;
}
public void prepareReport() throws SQLException, OutputNotFoundException, OutputEnvelopeCreationException
{
_parameters.put("PARAM1", "/main/prj/xxx1.png");
_parameters.put("PARAM2", "/main/prj/xxx2.jpg");
_parameters.put("PARAM3", "/main/prj/xxx3.jpg");
_parameters.put("PARAM4", "/main/prj/xxx4.jpg");
try
{
_jasperReport = JasperCompileManager.compileReport(pathReportJasper);
writeInfoLog("OPS: Report Configuration "+pathReportJasper+" has been prepared");
}
catch (Exception e)
{
putKOReport(outputStreamEnvelopeFactory,e.toString().getBytes());
e.printStackTrace();
writeErrorLog("OPS: prepareReport " + e.getMessage() + " " + e);
throw new RuntimeException(e);
}
}
public byte[] writeOutputFile(JasperPrint jasperPrint)
{
byte[] reportPdf = null;
try
{
reportPdf = JasperExportManager.exportReportToPdf(jasperPrint);
}
catch(Exception e)
{
putKOReport(outputStreamEnvelopeFactory,e.toString().getBytes());
e.printStackTrace();
writeErrorLog("OPS: writeOutputFile " + e.getMessage() + " " +e);
throw new RuntimeException(e);
}
return reportPdf;
}
Я что-то не так делаю? Кто-нибудь может мне помочь, пожалуйста?
Спасибо вам в аванс!