miércoles, 16 de noviembre de 2011

Cambiar coma por punto decimal en IReport/JasperReport

Bueno, despues de tiempo compartire algo, el problema es cambiar la coma decimal por punto decimal en un campo numerico en un reporte Jasper. IReport y Jaspercompiler toman por default el "locale" del sistema pero tambien se puede forzar a que sea diferente.

En IReport, si quieren q el punto sea el separador decimal y la coma el separador de miles, deben entrar a Herramientas->Opciones->IReport, en la ficha "Compilation and Execution" cambiar el valor de "Report Locale", para mi caso use "Ingles (Estados Unidos)" y lito se compila y funciona.

Ahora, mis reportes los compilo y muestro desde un jsp, alli lo que se debe hacer es pasar un parametro indicando el "locale". Para esto primero agregamos el "Import" respectivo en la cabecera:

<%@page import="net.sf.jasperreports.engine.JRParameter"%>

y luego agregamos el parametro antes de compilarlo, quedando algo asi:

Map parameters = new HashMap();
parameters.put("ID", (String)request.getParameter("nro_id"));

parameters.put(JRParameter.REPORT_LOCALE, Locale.US);

JasperReport report = JasperCompileManager.compileReport(reportPath);
JasperPrint print = JasperFillManager.fillReport(report, parameters, ConnrsProyectos);

Ok, espero a alguien mas le sirva.

6 comentarios:

  1. gracias de mucha utilidad

    ResponderEliminar
  2. Excelente, muchas gracias!

    ResponderEliminar
  3. Excelente!
    pero no he entendido lo último, y tengo una duda, casi estoy seguro que mi duda la explicas al final pero no entiendo, como hago para que cuando llame a mi reporte desde java sea con la localización que quiero, debo modificar el código de mi proyecto o lo hago desde el mismo reporte?
    Gracias por el aporte!

    ResponderEliminar
    Respuestas
    1. Yo lo realicé en ambos, desde el iReport (Herramientas->Opciones->IReport, en la ficha "Compilation and Execution" cambiar el valor de "Report Locale", usé "Ingles (Estados Unidos)" )
      y en los parametros desde tu codigo
      (parametros.put(JRParameter.REPORT_LOCALE, Locale.US);) e importas las librerias que te piden.

      Saludos

      Eliminar
  4. Excelente, lo use desde Open Erp o funciono de maravilla: 'REPORT_LOCALE':'(parametros.put(JRParameter.REPORT_LOCALE, Locale.US);)',

    ResponderEliminar