Passando Excel(xls) para uma página  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
renandpf
Debugger
[Avatar]

Membro desde: 07/03/2005 17:43:07
Mensagens: 62
Offline

Galera,

tenho que passar um arquivo Excel para uma página.

Para a cração do arquivo, estou usando a API "Java Excel API"(jxl.jar). Criar o arquivo até que é tranquilo, mas não stou conseguindo recupra-lo na página...

O fluxo é o seguinte: A página chama o Action que por sua vez chama um servlet que trata a exibição do xls.

Quando a página é submetida, o Browser pergunta para confirmar o download ou abrir o documento... Após, o excel abre mas informa que não é possivel abrir o arquivo!


Ai vai a Servlet reponsável por isso:



/*
* Created on Mar 9, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package br.com.sle.sca.relat;

import java.io.*;
import java.awt.*;
import java.util.ArrayList;
import javax.servlet.http.*;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;

import java.io.File;
import java.util.Date;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import br.com.sle.sca.model.Relatorio;

/**
* @author brunotarcha
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class RelatorioExcelServlet extends HttpServlet {

private static final int FRAGMENT_SIZE = 50;

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
try {

ArrayList relatorios = (ArrayList)request.getAttribute("relatorios");

ByteArrayOutputStream baos = writeReportAsExcel(relatorios, 600, 350);
//HTTP Headers
response.setHeader("Cache-Control", "max-age=30");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition","inline; filename=relatorio_" + System.currentTimeMillis() + ".xls");
response.setContentLength(baos.size());




//Enviar o documento XLS
ServletOutputStream sos = response.getOutputStream();
baos.writeTo(sos);
sos.flush();
sos.close();

} catch (Exception e)
{
response.getOutputStream().println("<BR><B>Ocorreu um erro ao exibir o relatório. Favor contate o administrador do sistema</B>");
}
}

private ByteArrayOutputStream writeReportAsExcel(ArrayList relatorios, int width, int height)
throws IOException, RowsExceededException, WriteException
{

ByteArrayOutputStream baosExcel = new ByteArrayOutputStream();

// Cria o arquivo
WritableWorkbook workbook = Workbook.createWorkbook(new File("relatorio_"+ System.currentTimeMillis() + ".xls"));
// Cria a camada de acesso
WritableSheet sheet = workbook.createSheet("First Sheet", 0);

//Insere o valor em A3 da tabela(0,2) -> 0==Coluna / 2==linha
Label label1 = new Label(0, 0, "Colaborador");
Label label2 = new Label(0, 1, "Categoria");
Label label3 = new Label(0, 2, "tarefa");
Label label4 = new Label(0, 3, "Projeto");
Label label5 = new Label(0, 4, "Horas");



sheet.addCell(label1);
sheet.addCell(label2);
sheet.addCell(label3);
sheet.addCell(label4);
sheet.addCell(label5);

//Escreve o arquivo
workbook.write();

//Fecha o arquvo
workbook.close();


return baosExcel;
}
}





Alguém me ajude!

This message was edited 1 time. Last update was at 11/03/2005 15:00:15


Renan Del Puppo Furtado
Java Micro Edition Certified (SCMAD 1.0)
Java Certified (SCJP 1.4)
[Email] [MSN]
bebad
JavaEvangelist
[Avatar]

Membro desde: 27/07/2006 19:56:35
Mensagens: 303
Offline

Bro, eu realmente não sei como poderia te ajudar em seu codigo,

MAS eu sei dee um framework chamado displayTag que pode te ajudar muito na sua tarefa.

Att,


Ref:
http://displaytag.homeip.net/displaytag-examples-1.1/example-new-export.jsp

Admin.. PATCH your box now, or DIE!!!

Oracle Certified Associate, Java SE 5/SE 6
Oracle Certified Professional, Java SE 6 Programmer
Oracle Certified Professional, Java ME 1 Mobile Application Developer
Oracle Certified Expert, Java EE6 Web Services Developer
Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional, Java EE 5 Web Component Developer
Oracle Certified Professional, Java EE 5 Business Component Developer

representing the old school defacers brazil:
red_eye
ATH
ir4dex
hax0rs lab
IoN
r00t_system
kernel_panic

bebad was here.
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team