/*** 下载模板* @param tplName* @param returnName* @param response* @param request* @throws Exception*/@RequestMapping(value = "/downloadTpl")public void downloadTpl(String tplName,String returnName, HttpServletResponse response,HttpServletRequest request) throws Exception {try {//获取模板存放的路径String path=request.getSession().getServletContext().getRealPath("/")+"/WEB-INF/ExcelTemplate/";InputStream is=new FileInputStream(new File(path + tplName));HSSFWorkbook wb=new HSSFWorkbook(is);//下载DownloadUtil dUtil=new DownloadUtil();ByteArrayOutputStream os=new ByteArrayOutputStream();wb.write(os);dUtil.download(os, response, returnName);os.flush();os.close();} catch (Exception e) {e.printStackTrace();throw new Exception();}}

(1)其中,需要配置的pom.xml文件

(2)excel文件

(3)downloadutil工具类文件

package com.test.util;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;public class DownloadUtil {/*** @param filePath 要下载的文件路径* @param returnName 返回的文件名* @param response HttpServletResponse* @param delFlag 是否删除文件*/protected void download(String filePath, String returnName, HttpServletResponse response, boolean delFlag){this.prototypeDownload(new File(filePath), returnName, response, delFlag);}/*** @param file 要下载的文件* @param returnName 返回的文件名* @param response HttpServletResponse* @param delFlag 是否删除文件*/protected void download(File file,String returnName,HttpServletResponse response,boolean delFlag){this.prototypeDownload(file, returnName, response, delFlag);}/*** @param file 要下载的文件* @param returnName 返回的文件名* @param response HttpServletResponse* @param delFlag 是否删除文件*/public void prototypeDownload(File file,String returnName,HttpServletResponse response,boolean delFlag){// 下载文件FileInputStream inputStream = null;ServletOutputStream outputStream = null;try {if(!file.exists()) {return;}response.reset();//设置响应类型    PDF文件为"application/pdf",WORD文件为:"application/msword", EXCEL文件为:"application/vnd.ms-excel"。response.setContentType("application/octet-stream;charset=utf-8");//设置响应的文件名称,并转换成中文编码//returnName = URLEncoder.encode(returnName,"UTF-8");returnName = response.encodeURL(new String(returnName.getBytes(),"iso8859-1"));    //保存的文件名,必须和页面编码一致,否则乱码//attachment作为附件下载;inline客户端机器有安装匹配程序,则直接打开;注意改变配置,清除缓存,否则可能不能看到效果response.addHeader("Content-Disposition",   "attachment;filename="+returnName);//将文件读入响应流inputStream = new FileInputStream(file);outputStream = response.getOutputStream();int length = 1024;int readLength=0;byte buf[] = new byte[1024];readLength = inputStream.read(buf, 0, length);while (readLength != -1) {outputStream.write(buf, 0, readLength);readLength = inputStream.read(buf, 0, length);}} catch (Exception e) {e.printStackTrace();} finally {try {outputStream.flush();} catch (IOException e) {e.printStackTrace();}try {outputStream.close();} catch (IOException e) {e.printStackTrace();}try {inputStream.close();} catch (IOException e) {e.printStackTrace();}//删除原文件if(delFlag) {file.delete();}}}/*** by tony 2013-10-17* @param byteArrayOutputStream 将文件内容写入ByteArrayOutputStream* @param response HttpServletResponse    写入response* @param returnName 返回的文件名*/public void download(ByteArrayOutputStream byteArrayOutputStream, HttpServletResponse response, String returnName) throws IOException {response.setContentType("application/octet-stream;charset=utf-8");returnName = response.encodeURL(new String(returnName.getBytes(),"iso8859-1"));            //保存的文件名,必须和页面编码一致,否则乱码response.addHeader("Content-Disposition",   "attachment;filename=" + returnName);response.setContentLength(byteArrayOutputStream.size());ServletOutputStream outputstream = response.getOutputStream();    //取得输出流byteArrayOutputStream.writeTo(outputstream);                    //写到输出流byteArrayOutputStream.close();                                    //关闭outputstream.flush();                                            //刷数据
  }
}

(4)jsp页面的调用代码

 //模板下载$("#downloadFlowOrderTpl").click(function(){var tplName = "测试资金流水单模板.xls";var returnName =  "资金流水单模板.xls";window.location.href = "${pageContext.request.contextPath}/uploadCtrl/downloadTpl?tplName="+tplName+"&returnName="+returnName;});

转载于:https://www.cnblogs.com/yangyuke1994/p/10225026.html

poi下载excel模板相关推荐

  1. Java 使用poi自定义下载Excel模板

    poi自定义Excel模板 设置下拉框以及悬浮提示信息 首先导入maven依赖 <dependency><groupId>org.apache.poi</groupId& ...

  2. springboot使用poi实现Excel模板的下载功能

    今天做个项目,要求下载exel模板,然后填写数据,在上传,是通过poi实现的,这里给出下载excel模板的实现方案. 首先将excel模板放到resource的根目录下,然后提供下载接口,如下: @A ...

  3. java hutool poi 基于excel模板文件,填充数据的思路

    需求 用户可下载excel模板文件,填充数据后上传,也可以下载已上传所有数据的excel,模板文件和含数据excel,都有列头及列说明:由此想到模板文件和含数据excel共用一份excel模板,下载数 ...

  4. java 导入excel表格(批量导入),下载excel模板,导出表格

    1.导入excel表格(批量导入) 如图,给id=83和id=84的老师导入工作时间. 导入的excel模板如下 注意导入excel表格时关于日期时间类的的数据要设置对应的格式. 后台接口 /*** ...

  5. vue实现下载EXCEL模板、导入EXCEL文件

    vue实现下载EXCEL模板.导入EXCEL文件 在项目中很常见需要先下载模板,根据模板导入 下面展示一些 下载模板代码片段. 需要有一个下载模板的接口,点击下载触发函数,调用接口,返回下载地址 接口 ...

  6. Java下载Excel模板文件的实现

    在项目中经常会用到文件下载的功能,比如下载excel模板,这里简单记录一下实现过程 1.将模板文件放到项目资源文件目录中,也可以自定义其他位置,只要通过路径能找到该文件就行: 2.controller ...

  7. vue下载excel模板文件,excel读取

    一.下载excel模板文件 <template><a-button type="primary" @click="downloadExcel" ...

  8. springmvc下载excel模板示例代码

    以下是通过springmvc下载项目中的excel模板文件示例代码: @ApiOperation("下载excel模板")@RequestMapping(value = " ...

  9. 下载excel模板为空记录

    记录一次开发下载excel模板记录 项目场景: 需求是下载excel导入模板 问题描述: 代码中模板位置: 代码是这样的: //获取模板文件输入流 InputStream resourceAsStre ...

最新文章

  1. 记一次事务报错问题 Transaction synchronization is not active
  2. 量化派基于Hadoop、Spark、Storm的大数据风控架构--转
  3. 中国六个漂亮的古镇风景名胜区网站欣赏
  4. 虚拟桌面几个常见问题?
  5. day21 java的八大包装类
  6. I.MX6 Linux kernel LVDS backlight enable
  7. L1-055 谁是赢家-PAT团体程序设计天梯赛GPLT
  8. 《流畅的Python》读书笔记——Python函数装饰器和闭包
  9. setsockopt中参数之SO_REUSEADDR的意义
  10. python转go_使用Go获取Python版本
  11. 永久使用卡巴斯基的方法
  12. 飞翔 noip提高组难度
  13. 受用一生的高效 PyCharm 使用技巧 !
  14. 借贷系统后台操作说明
  15. 【Java语言】请输入任意一个三位数,输出个位 , 十位 , 和百位,输入:123,输出:3,2,1
  16. 大数据Hadoop之HDFS和MapReduce_02_01
  17. android字体图形绘制,android paint api drawText 绘制字体字形
  18. 程序员必备的编程集成开发工具
  19. Python 3.10来了,switch语法终于出现
  20. 罗马时钟代码 jquery

热门文章

  1. java命令行参数args_Args4J (Java 命令行参数控制开源项目) 使用指南
  2. access 此程序未正确安装_SQLite简介与安装
  3. 美赛整理之遗传算法优化BP神经网络的齿轮故障诊断问题
  4. cms php vue 开源_2020最受欢迎的企业网站CMS建站系统排行榜
  5. 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器
  6. 启动服务_用控制台启动一个wcf服务
  7. Redis单机模式搭建
  8. 「镁客·请讲」Site24×7李飞:云服务是大势所趋,云监控生意又要怎么做?...
  9. Linux的基础命令和配置文件
  10. Promise 的 9 个提示