前言
我们在开发一些后台系统时,可能会遇到下载模板excel的功能,用户点击下载模板,即下载一个模板excel到本地,这个功能是怎么实现的呢?下面就告诉你
实现
先放一个模板excel到static或者templates文件夹下
下面就是实现的代码
public void downTemplateExcel(HttpServletRequest request, HttpServletResponse response) throws IOException {String fileName="模板.xlsx";FileInputStream inputStream=null;ServletOutputStream outputStream = null;String filePath = getClass().getResource("/static/" + fileName).getPath();response.setContentType("");response.setCharacterEncoding("UTF-8");final String userAgent = request.getHeader("USER-AGENT");String finalFileName = null;if(StringUtils.contains(userAgent, "MSIE")||StringUtils.contains(userAgent,"Trident")){finalFileName = URLEncoder.encode(fileName,"UTF8");System.out.println("IE浏览器");}else if(StringUtils.contains(userAgent, "Mozilla")){finalFileName = new String(fileName.getBytes(), "ISO8859-1");}else{finalFileName = URLEncoder.encode(fileName,"UTF8");}filePath = URLDecoder.decode(filePath, "UTF-8");response.setHeader("Content-Disposition", "attachment;fileName=" + finalFileName);try {
inputStream = new FileInputStream(filePath);
outputStream=response.getOutputStream();int len = 0;byte[] buffer = new byte[1024];while ((len = inputStream.read(buffer)) >0) {
outputStream.write(buffer,0,len);}}catch (Exception e){e.printStackTrace();}finally {if (outputStream!=null){outputStream.flush();outputStream.close();}if (inputStream!=null){inputStream.close();}}}