Вам необходимо установить заголовок типа контента, чтобы браузер понимал, что это за файл.
response.setHeader("Content-Type", "application/vnd.ms-excel");
Вам необходимо установить заголовок расположения содержимого, чтобы браузер отображал диалоговое окно Сохранить как :
response.setHeader("Content-Disposition", "attachment;filename=\"" + yourFileName + "\"");
Необходимо убедиться, что вы записываете файл как двоичные данные, а не как символьные данные.
InputStream input = getExcelFileContentSomehow();
OutputStream output = response.getOutputStream();
// Write input to output.
Обновление : согласно вашему фрагменту кода заголовок Content-Disposition
неверен. В конце заголовка есть двоеточие. Убери это.