Skip to content

Commit da6af7f

Browse files
committed
Cambios para utilizar jasperreport 7
1 parent 797afce commit da6af7f

2 files changed

Lines changed: 45 additions & 31 deletions

File tree

web/pom.xml

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,24 +42,30 @@
4242
<dependency>
4343
<groupId>net.sf.jasperreports</groupId>
4444
<artifactId>jasperreports</artifactId>
45-
<version>6.21.3</version>
45+
<version>7.0.3</version>
4646
</dependency>
47-
4847
<dependency>
49-
<groupId>org.codehaus.groovy</groupId>
50-
<artifactId>groovy</artifactId>
51-
<version>3.0.7</version>
52-
</dependency>
48+
<groupId>net.sf.jasperreports</groupId>
49+
<artifactId>jasperreports-servlets</artifactId>
50+
<version>7.0.3</version>
51+
</dependency>
5352
<dependency>
54-
<groupId>org.apache.poi</groupId>
55-
<artifactId>poi-ooxml</artifactId>
56-
<version>4.1.2</version>
53+
<groupId>net.sf.jasperreports</groupId>
54+
<artifactId>jasperreports-excel-poi</artifactId>
55+
<version>7.0.3</version>
56+
</dependency>
57+
<dependency>
58+
<groupId>net.sf.jasperreports</groupId>
59+
<artifactId>jasperreports-groovy</artifactId>
60+
<version>7.0.3</version>
5761
</dependency>
62+
5863
<dependency>
5964
<groupId>org.apache.poi</groupId>
60-
<artifactId>poi</artifactId>
61-
<version>4.1.2</version>
62-
</dependency>
65+
<artifactId>poi-ooxml</artifactId>
66+
<version>5.3.0</version>
67+
</dependency>
68+
6369
<dependency>
6470
<groupId>com.google.guava</groupId>
6571
<artifactId>guava</artifactId>

web/src/main/java/org/javabeanstack/web/util/JasperReportUtil.java

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@
4242
import net.sf.jasperreports.engine.JasperReport;
4343
import net.sf.jasperreports.engine.data.JRMapArrayDataSource;
4444
import net.sf.jasperreports.engine.export.HtmlExporter;
45-
import net.sf.jasperreports.engine.export.JRXlsExporter;
4645
import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter;
46+
import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
4747
import net.sf.jasperreports.engine.util.JRLoader;
4848
import net.sf.jasperreports.export.SimpleExporterInput;
4949
import net.sf.jasperreports.export.SimpleHtmlExporterOutput;
5050
import net.sf.jasperreports.export.SimpleHtmlReportConfiguration;
5151
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
52-
import net.sf.jasperreports.export.SimpleXlsReportConfiguration;
52+
import net.sf.jasperreports.export.SimpleXlsxReportConfiguration;
5353
import org.apache.logging.log4j.LogManager;
5454
import org.apache.logging.log4j.Logger;
5555

@@ -135,7 +135,7 @@ public void showReport(String reportName, Map<String, Object> parameters,
135135
Class classRef) throws JRException, IOException, NamingException, Exception {
136136

137137
Map[] dataRows = convertTo(data);
138-
if (reportName == null){
138+
if (reportName == null) {
139139
throw new Exception("El nombre del reporte es nulo o no existe");
140140
}
141141
if (!reportName.endsWith(".jasper")) {
@@ -187,8 +187,7 @@ public void print(String reportName, Map<String, Object> parameters,
187187
servletOutputStream.flush();
188188
servletOutputStream.close();
189189
FacesContext.getCurrentInstance().responseComplete();
190-
}
191-
if ("doc".equals(parameters.get("device"))) {
190+
} else if ("doc".equals(parameters.get("device"))) {
192191
JRDocxExporter exporter = new JRDocxExporter();
193192
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
194193
HttpServletResponse httpServletResponse = (HttpServletResponse) facesCtx.getExternalContext().getResponse();
@@ -200,8 +199,7 @@ public void print(String reportName, Map<String, Object> parameters,
200199
outputStream.flush();
201200
outputStream.close();
202201
FacesContext.getCurrentInstance().responseComplete();
203-
}
204-
if ("pdf".equals(parameters.get("device"))) {
202+
} else if ("pdf".equals(parameters.get("device"))) {
205203
String target;
206204
if (parameters.containsKey("target")) {
207205
target = parameters.get("target").toString();
@@ -213,25 +211,35 @@ public void print(String reportName, Map<String, Object> parameters,
213211
ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
214212
JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
215213
FacesContext.getCurrentInstance().responseComplete();
216-
}
217-
if ("xls".equals(parameters.get("device"))) {
218-
JRXlsExporter exporter = new JRXlsExporter();
214+
} else if ("xlsx".equals(parameters.get("device"))) { // Condición actualizada
215+
// Usamos el exportador moderno para .xlsx
216+
JRXlsxExporter exporter = new JRXlsxExporter();
219217
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
218+
220219
HttpServletResponse httpServletResponse = (HttpServletResponse) facesCtx.getExternalContext().getResponse();
221-
httpServletResponse.setContentType("application/nd.openxmlformats-officedocument.spreadsheetml.sheet");
222-
httpServletResponse.setHeader("Content-Disposition", "attachment;filename= " + reporte.replaceAll(".jasper", "") + ".xls");
220+
// ContentType correcto para .xlsx
221+
httpServletResponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
222+
// Extensión de archivo actualizada a .xlsx
223+
httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + reporte.replaceAll(".jasper", "") + ".xlsx");
224+
223225
OutputStream outputStream = httpServletResponse.getOutputStream();
224226
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outputStream));
225-
SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
227+
228+
// Usamos la configuración específica para XLSX
229+
SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
226230
configuration.setOnePagePerSheet(false);
227231
configuration.setDetectCellType(true);
228232
configuration.setCollapseRowSpan(false);
233+
configuration.setWhitePageBackground(false);
234+
configuration.setRemoveEmptySpaceBetweenRows(true);
235+
229236
exporter.setConfiguration(configuration);
230237
exporter.exportReport();
238+
231239
outputStream.flush();
232240
outputStream.close();
233241
FacesContext.getCurrentInstance().responseComplete();
234-
}
242+
}
235243
} else {
236244
JasperPrintManager.printReport(jasperPrint, false);
237245
}
@@ -366,7 +374,7 @@ public JasperReport getJasperReportFrom(String reportNameJasper, Class classRef)
366374
jasperReport = (JasperReport) JRLoader.loadObject(IOUtil.getResourceAsStream(classRef, "/reports/" + reportNameJasper));
367375
} catch (NullPointerException e) {
368376
ErrorManager.showError(e, LOGGER);
369-
throw new JRException("Es posible que no exista el reporte " + Fn.nvl(reportNameJasper,"").toUpperCase());
377+
throw new JRException("Es posible que no exista el reporte " + Fn.nvl(reportNameJasper, "").toUpperCase());
370378
}
371379
}
372380
return jasperReport;
@@ -384,10 +392,10 @@ public DefaultStreamedContent getReportStreamedContent(String reportName, Map<St
384392
JasperPrint jasperPrint = JasperFillManager.fillReport(jasper, parameters, new JRMapArrayDataSource(dataRows));
385393
docPdf = JasperExportManager.exportReportToPdf(jasperPrint);
386394
return DefaultStreamedContent.builder()
387-
.stream(() -> new ByteArrayInputStream(docPdf))
388-
.contentType("application/pdf")
389-
.name(reportName.replaceAll(".jasper", "") + ".pdf")
390-
.build();
395+
.stream(() -> new ByteArrayInputStream(docPdf))
396+
.contentType("application/pdf")
397+
.name(reportName.replaceAll(".jasper", "") + ".pdf")
398+
.build();
391399
}
392400
}
393401

0 commit comments

Comments
 (0)