[Help] Exportar dados para arquivo

6 respostas
lidianycs

Pessoal, tenho um projeto aq onde pego alguns dados pessoais e exporto para um arquivo .csv
Utilizo a API JavaCSV para criar esse arquivo e funciona muito bem, só que este arquivo é salvo em um diretório que eu especifiquei no código:

CsvWriter writer = new CsvWriter("/home/user/Desktop/data.csv", ',', Charset.forName("ISO-8859-1") );

Preciso fazer com que este arquivo seja gerado e devolvido para o usuário salvá-lo em uma pasta a sua escolha.
COmo se fosse um LINK para download!

É um projeto web, estou utilizando JSF e tomahawk.

Não tenho idéia de como fazer isso!
Alguém tem alguma indicação?
:smiley:

6 Respostas

P

vc precisa salvar esse arquivo dentro do seu web context, na sequencia criar um link na sua pagina que aponte para esse arquivo.

abraços.

lidianycs

OBrigada! :smiley:
mas … Vc poderia me dar um exemplo de como fazer isso…
É que realmente não tenho idéias… :?
Está funcionando, mas não do jeito que deve ser…

lidianycs

Oi pessoal!
Por favor me ajudEEEM!
encontrei o seguinte código:

public String button1_action() {
  String filename = "foo.pdf"; // Filename suggested in browser Save As dialog
  String contentType = "application/pdf"; // For dialog, try application/x-download
  byte[] data = ; // File contents to be written. Sorry, YOU have to do this part!

  FacesContext fc = FacesContext.getCurrentInstance();
  HttpServletResponse response = (HttpServletResponse)fc.getExternalContext().getResponse();
  response.setHeader("Content-disposition", "attachment; filename=" + filename);
  response.setContentLength(data.length);
  response.setContentType(contentType);
  ServletOutputStream out = response.getOutputStream();
  out.write(data);
  fc.responseComplete();

  return null;
}

Mas não consigo integrar no meu projeto por que o http://javacsv.sourceforge.net/index.html?com/csvreader/CsvWriter.html , simplesmente recebe um OutputStream e escreve os dados nele, mas não aceita um ServletOutputStream e nem possui métodos para retornar o arquivo ou bytes de dados.
O que posso fazer?
Será que terei que usar outra API?
Me ajuuuuuudeeeM!
Agradeço sugestões!

:D

lidianycs

Dei uma olhada nesse DisplayTag, mas não entendi mto bem…
Sei que não vou precisar exibir os dados a serem exportados, apenas clicar, gerar o arquivo e devolvê-lo!
aBRaço!
:slight_smile:

lidianycs

? :cry:

R

Se o método do seu CsvWriter recebe um OutputStream, então ele aceita sim um ServletOutputStream, pois essa classe herda de OutputStream.

Então, você poderia simplesmente passar o response.getOutputStream para o método do CsvWriter.

Criado 26 de agosto de 2008
Ultima resposta 26 de ago. de 2008
Respostas 6
Participantes 3