Java操作Excel之下载模板
本文章描述使用Java开发语言来下载服务器上已存在的模板案例,下篇文章会具体描述读取数据库数据到指定的excel模板。大体分为以下三部分:
- 读取服务器上的 Excel模板路径
- 设置http请求的相应头和数据类型
- 读取文件流,输出流
前台参数
参数 | 含义 |
---|---|
templateName | 模板名称 |
fileName | 下载后的文件名称 |
后台代码
public static final void downloadTemplate(HttpServletRequest request, HttpServletResponse response) {
// 模板名称
String templateName = request.getParameter("templateName");
// 下载文件名
String fileName = request.getParameter("fileName");
try {
fileName = new String(fileName.getBytes("GBK"), "ISO-8859-1");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// 获取模板位置,读取数据库(也可以读取配置文件或写死)
String templatePath = PubConfig.getProperty("EXCEL_TEMPLATE_PATH");
// 实际位置
String path = templatePath + File.separator + templateName;
System.out.println(path);
// 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
// 2.设置文件头:最后一个参数是设置下载文件名
response.setHeader("Content-Disposition", "attachment;fileName="
+ fileName);
response.addHeader("Content-Type", "application/vnd.ms-excel");
OutputStream out;
// 通过文件路径获得File对象(假如此路径中有一个download.pdf文件)
File file = new File(path);
try {
FileInputStream inputStream = new FileInputStream(file);
// 3.通过response获取OutputStream对象(out)
out = response.getOutputStream();
byte[] buffer = new byte[512];
int b = inputStream.read(buffer);
while (b != -1) {
// 4.写到输出流(out)中
out.write(buffer, 0, b);
b = inputStream.read(buffer);
}
inputStream.close();
out.close();
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
是不是简单易懂