He decidido registrar el proceso de como generar archivos Excel con POI mediante Spring 3 para que no se me olvide (aunque es bastante sencillo).
Me sorprendí de terminarlo en tan sólo 3 pasos!
1) Generar un controller que obtiene los valores que se pretenden mostrar en la vista, los agrega al modelmap de MVC que maneja Spring y luego devuelva el nombre de la vista encargada de generar el excel.
@Controller
@RequestMapping("/excel")
public class ExcelController {
@Autowired
private Servicio servicio;
@RequestMapping(value = "/{parametro}", method = RequestMethod.GET)
public String generarExcelByParametro(
ModelMap modelMap, HttpServletResponse response,
@PathVariable("parametro") String nombreVista) {
modelMap.put("datos", servicio.obtenerDatos(parametro));
response.setHeader("Content-type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition","attachment; filename=\"excel.xls\"");
return "reporteExcel";
}
}
Observa que el método generarExcelByParametro() del controller responde a una petición http://{servidor:puerto}/{contexto}/excel/{parametro} y realiza algo en un servicio que devuelve cierta información que se espera administrar de lado de la vista (más adelante lo vemos) y lo guarda dentro del ModelMap de spring con el identificador "datos".
Los headers que se agregan al response, son solo para asegurar que cuando se genere el archivo .xls, se identifique como tal y se obligue al usuario a descargarlo.
Finalmente la cadena ("reporteExcel") que se devuelve determina el nombre de la vista que interpretara los datos para generar el documento.