JSP Page exporta para Planilha eletrônica

Fala galera… dúvida: é possível depois de o usuário inserir informações numa tabela ou form, a página JSP processar isso e converter num arquivo do Excel por exemplo? Assim: entra-se com os dados na página (formulário ou tabela) e depois de enviar (submit) por dentro o java processa isso no servidor e depois devolve um arquivo no formato .xlsx, por exemplo.

Se não, o que vocês sugerem para fazer isso? Precisa ser por web mesmo, e não dá para ser no Google Docs por exemplo, devido segurança e o alcance disso. Desde já obrigado.

até mais.

Voce pode usar Apache POI

Você também pode gerar um arquivo de texto no formato CSV. O mesmo é aberto pelo Excel sem problemas. Depois o cliente pode converter para Excel caso necessário.

Tá… já li quase tudo sobre o Apache POI… mas tem diversos exemplos de criação de planilhas mas tipo para desktop. Em JSP teria que “pegar” do form ou tabela, e trabalhar isso dentro do servidor e depois liberar para download o arquivo. Seria isso, mais ou menos?

Obrigado mesmo assim.

Obrigado. Mas como exportar para CSV? Tem alguma lib para JSP que faz isso? Ou tem tipo uma tag JSTL que ajuda nessa?

Valeu.

Isso é independente de web e desktop. Leia do seu banco de dados e gere diretamente a saída no formato Excel usando Apache POI. Por fim, faz o download do arquivo. Você pode criar uma biblioteca genérica pra atender casos comuns.

Isso mesmo.

O que você quer é saber como fazer o download do arquivo ?
Você deve informar o “Content Type” e “Content-Disposition” do response e depois gravar no outputStream do mesmo:

response.setContentType("application/vnd.ms-excel"); // ou então application/excel
response.setHeader("Content-Disposition", "attachment; filename=filename.xls");
HSSFWorkbook workbook = new HSSFWorkbook();
// ...
// preenche seu arquivo
// ...
workbook.write(response.getOutputStream()); 
workbook.close();

Você usaria a API de IO do Java para gerar o arquivo e utilizar a dica do @RenanRosa para disponibilizar o download.

Gerar Arquivo texto no Java:

Há diversos exemplos de como gerar arquivos no Java na Internet.

Ainda pode utilizar o org.omnifaces.util.Faces.sendFile(file, true) da biblioteca Omnifaces para fazer o download.

Onde file é um java.util.File