Problemas com exportação CSV

3 respostas
M

Tenho uma rotina que exporta os dados para um arquivo .csv. Os dados são exportador corretamente, no final da exportação abro o arquivo com o notepad e esta perfeito, mas quando ele é aberto pelo excel os acentos ficam todos bagunçados.

Verifiquei que isso ocorre porque o arquivo é exportado com o enconding UTF-8, quando salvo o arquivo como ANSI esse problema resolve, mas nao quero que o usuario faça isso, como posso salvar ele direto como ANSI pelo java?

segue o codigo:

response.setCharacterEncoding(ASCII);

response.setLocale(new Locale(pt, BR));

response.setContentType(application/octet-stream);

response.addHeader(Content-disposition, attachment;filename=xx + nomeArquivo);

//carrega o streaming de saida que recebe os dados
ServletOutputStream os = response.getOutputStream();

//aqui eu gravo as informações do arquivo

os.flush();
os.close();

3 Respostas

A

Ajuste o encoding para ANSI (O mais próximo é o “ISO-8859-1”) na linha do setCharacterEncoding.

N

Oiee…

Não sei responder sua pergunta  :cry: mas queria que me ajudasse  :lol: ...
  Preciso de um exemplo tipo o seu, com exportação csv, que fizesse uma consulta no banco de dados e apartir dessa consulta gerasse um arquivo .csv para ser exportado.

Se vc puder me ajudar com o código…

Obrigada!!
Tchau!

M

Aldrin, eu tinha feito isso antes ja e não tinha funcionada pelo setCharacterEncoding. Consegui corrigir o problema usando o OutputStreamWriter, dentro dele o enconding funcionou para o arquivo. Segue o cosigo abaixo tb pra ajudar a Nana!

String strRow = “Imprimindo linha”;
String newRow = “\r\n”;

response.setContentType(“text/plain”);
response.addHeader(“Content-disposition”, “attachment;filename=arquivo.csv”);

//carrega o streaming de saida que recebe os dados

ServletOutputStream os = response.getOutputStream();

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(os, ISO-8859-1));
//imprimindo uma linha de exemplo

strRow = strRow + newRow;

out.write(strRow);
//finaliza a exportação do arquivo

out.flush();

out.close();
Criado 23 de novembro de 2007
Ultima resposta 23 de nov. de 2007
Respostas 3
Participantes 3