Pessoal,
Preciso de uma dica, criei um relatorio com um subrelatorio no Ireport. Dentro do ireport tudo funciona. Só que quando chamo pelo java, o subrelatorio nao aparece.
segue abaixo meu código:
String query = hriquery.montaQuery(relED);
Map map = new HashMap<String, String>();
map.put("SUBREPORT_DIR", path+"/"); // caminho do subrelatorio
hriRelatorio.geraRelatorioXLS(query, "Ind200PrincipalXls_.jasper", map);
(...)
public void geraRelatorioXLS(String sql, String jasper, Map map) {
FacesContext faces = null;
ResultSet rs = null;
try {
rs = HriQuery.getResultSet("DS", sql);
faces = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition","attachment; filename=\"RelTeste.xls\"");
imprimeXLS(jasper, map, rs, response.getOutputStream());
...
private static void imprimeXLS(String jasper, Map map, ResultSet rs, OutputStream os) throws IOException, JRException {
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
JasperPrint jasperPrint;
String path = p.getValor("pr.Path_Reports");
try {
jasperPrint = JasperFillManager.fillReport(path + "/" + jasper, map, jrRS);
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, os);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE,Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
exporter.exportReport();