I am trying to export one or many records from a panel to an Excel template. Today I can only export a selected record but I want to improve this part. I have tried several possibilities but either print only one record or print the entire panel, not the ones I select. Thank you very much for your time.
The ExtJS code is:
var prevFnExcel = function(grid, store, selModel){
var parameters = store.data.keys.toString();
var url = ctx + '/facturas.do?op=exportarExcel&idsFacturas=' + parameters;
Ext.DomHelper.append(document.body, {
tag: 'iframe',
id:'informeIframe',
frameBorder: 0,
width: 0,
height: 0,
css: 'display:none;visibility:hidden;height:0px;',
src: url
});
return false;
};
Since I'm working with Spring and use mvc, the implemented Java class is:
/*
* (non-Javadoc)
* @see pack.senectus.facturas.service.FacturasService#exportarExcel(javax.servlet.http.HttpServletResponse, java.io.InputStream, java.lang.Integer)
*/
@Override
public void exportarExcel(HttpServletResponse response, InputStream reporte, List<Integer> idsFacturas) throws ClassNotFoundException, Exception{
List<DatosFactura> listaDatosFactura = new ArrayList<DatosFactura>();
for (Integer id : idsFacturas) {
DatosFactura datosFactura = new DatosFactura();
Sene1FacturaTeleasistencia factura = (Sene1FacturaTeleasistencia) sene1FacturaTeleasistenciaDAO.getById(id);
datosFactura.setSene1FacturaTeleasistencia(factura);
listaDatosFactura.add(datosFactura);
}
String titulo = "export_facturas.xls";
JasperUtils.generarExcelJasperReport(reporte, listaDatosFactura, null, response, titulo);
}
And the Java driver is:
public ModelAndView exportarExcel(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, Exception{
String dev = "";
String ids = ServletRequestUtils.getStringParameter(request, "idsFacturas", "");
String[] idsFacturas = ids.split(",");
try{
InputStream reporte = request.getSession(true).getServletContext().getResourceAsStream("/WEB-INF/reportes/facturaExcel.jrxml");
facturaTeleasistenciaService.exportarExcel(response, reporte, Arrays.asList(ArrayUtils.toObject(Stream.of(idsFacturas).mapToInt(Integer::parseInt).toArray())));
} catch (BusinessException e) {
dev = Utils.successJsonWithId(Boolean.FALSE, e.getMessage(), 1);
}
return createJSONMaV(dev);
}