quarta-feira, 14 de julho de 2010

Gerar Relatório .XLS (Excel) em uma Servlet

Servlet


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
{
try {
RelConexao rc = new RelConexao();
rc.conexaorel(); // Faz a conex?o

String pathJasper = getServletContext().getRealPath("/relatorios") + "/";
String path = getServletContext().getRealPath("/");
// Parametros do relatorio

Map parametros = new HashMap();
parametros.put("", pathJasper + "Relatorio_xls.jasper");
try {
JasperPrint impressao = JasperFillManager.fillReport(
pathJasper + "Relatorio_xls.jasper", parametros, rc.con);
response.setContentType("application/excel");
JRXlsExporter exporterXls = new JRXlsExporter();
exporterXls.setParameter(JRExporterParameter.JASPER_PRINT,impressao);
exporterXls.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
// "C:/teste.xls");
path + "Relatorio_xls.xls");

exporterXls.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXls.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.TRUE);
exporterXls.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);

//Se você quiser em PDF e só abilitar e alterar o response.sendRedirect( colocando o mesmo nome que você gerou o pdf
//para que possa abrir no browser!
//JasperManager.printReportToPdfFile(impressao, path + "Relatorio_Lampadas.pdf");
exporterXls.exportReport();
// Redireciona para o xls gerado
response.sendRedirect("Relatorio_xls.xls");
// Redireciona para o pdf gerado se você abilitar JasperManager.printReportToPdfFile( ...
//response.sendRedirect("Relatorio_xls.xls");
} catch (Exception e) {
response.getWriter().println("Erro ao gerar o relatório: " + e);
System.out.print("Erro ao gerar o relatório: " + e);
}
} catch (Exception e) {
System.out.println("Erro: " + e);
}
}

}


Classe de Conexão com o banco de dados!



public class RelConexao {

public static Connection con;
public void conexaorel() {
try {
if (con == null || con.isClosed()) {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/bd, "postgres","postgres");
}
} catch (Exception e) {
System.out.println("Não conectou com o banco de dados!");
e.printStackTrace();
}
}

Um comentário:

Thales Agnus disse...

Ótimo, era isso q estava procurando, salvou aqui cara.


valeu....