Apache POI выходной проблемы - PullRequest
6 голосов
/ 06 мая 2011

У меня проблема с Apache POI. Я пытаюсь вернуть файл после обработки соответствующих данных. Когда я возвращаю файл в браузер (оба IE8 / 9, firefox), браузер возвращает загрузку мусорных символов. Это происходит только в том случае, если файл Excel имеет большой размер и процесс выполняется, скажем, в течение 2 минут и более. В противном случае он возвращает файл, который я могу открыть в Excel.

Любая помощь приветствуется, спасибо.

response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + ".xls\"");
OutputStream out = null;

try {
  out = new BufferedOutputStream(response.getOutputStream());
  wb.write(out);
  out.flush();     
} catch (IOException ex) {
  ex.printStackTrace();
}

1 Ответ

4 голосов
/ 06 мая 2011

Я думаю, что вы также должны указать длину контента.Это строка, которую вы должны вставить:

response.setContentLength(/* length of the byte[] */);

Я предлагаю вам использовать класс IOUtils Apache Commons для работы с байтовыми массивами и потоками.

...