Export data with ExtJS in Excel file

1

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);
}
    
asked by Bufank85 21.03.2017 в 17:17
source

1 answer

1

For general knowledge after thinking about it I leave the solution in case it serves you some day.

var prevFnPDF = function(grid, store, selModel){
        var recordSelected = selModel.selections.map;
        var obj = new Array();
        for (r in recordSelected) {
            obj.push(r);
        }
        var url = ctx + '/facturas.do?op=exportarPdf&idsFacturas=' + obj.toString();
    
answered by 24.03.2017 в 11:10