下面是我最近用的一種excel文件的下載方法,當然方法很多,這種也不是最好。但希望對大家有用。
直接上例子
form.jsp
<a href="javascript:download('project_template.xls','project_template.xls')">模板下載 </a>
//其中download函數第一個參數指定模板的路徑,第二個是名字
//下載附件
function download(url,fileName){
var url="${ctx}/boop/pm/project/downExcel.jsp?url="+url+"&fileName="+fileName;
location.href=url;
}
downExcel.jsp
<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.io.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>excel文件下載</title>
</head>
<body>
<%
//聲明要下載的文件loadFile
File loadFile=new File(config.getServletContext().getRealPath(request.getParameter("url")));
String filename=new String(request.getParameter("fileName").getBytes( "ISO-8859-1"),"UTF-8");
//使用對話框保存文件
response.setHeader("Content-disposition","attachment;filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));
//通知客戶要下載文件類型
response.setContentType("application/msword");
//定義下載文件的長度
long fileLength=loadFile.length();
//把長整形的文件長度轉換爲字符串
String length=String.valueOf(fileLength);
response.setHeader("content_Length",length);
//聲明一個輸入文件流clientFile,接收並讀取己下載的文件
FileInputStream clientFile=new FileInputStream(loadFile);
//聲明一個輸出流serverFile獲取要下載的文件
OutputStream serverFile=response.getOutputStream();
//把要下載的文件的內容讀入輸入流clientFile
int n=0;
byte b[]=new byte[1024];
while((n=clientFile.read(b))!=-1)
{
serverFile.write(b,0,n);
}
serverFile.flush();
out.clear();
out = pageContext.pushBody();
serverFile.close();
clientFile.close();
%>
</body>
</html>