一个简单的Servlet程序片段,从服务器端下载Excel

/**
*
* @param response
* @param fileDownPath Excel 存储在服务器端的Excel文件路径
*
*/
public void DownExcelFile(HttpServletResponse response, String fileDownPath) {
File file = new File(fileDownPath);
if (file.exists()) {
try {
// 导出样式
response.setContentType("application/x-msexcel");
String fileName = fileDownPath;
// 保存文件名称
fileName = fileName.substring(fileName.lastIndexOf("/") + 1);
// 处理中文
fileName = new String(fileName.getBytes("GB2312"), "ISO-8859-1");
response.setHeader("Content-Disposition",
"attachment; filename=" + fileName);
FileInputStream bis = new FileInputStream(file);
OutputStream bos = response.getOutputStream();
byte[] buff = new byte[1024];
int readCount = 0;
//每次从文件流中读1024个字节到缓冲里。
readCount = bis.read(buff);
while (readCount != -1) {
//把缓冲里的数据写入浏览器
bos.write(buff, 0, readCount);
readCount = bis.read(buff);
}
if (bis != null) {
bis.close();
}
if (bos != null) {
bos.close();
}
// 下载完毕,给浏览器发给完毕的头
response.setStatus(HttpServletResponse.SC_OK);
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();
}
}
}