目录 一、前言二、下载模板三、Excel导入 一、前言 最近做了一个导入excel的功能,需求: 先提供一个下载Excel模板的功能。用户下载好模板后,可以在模板文件当中填写要上传的内容,填写完过后再进行导入Excel,然后
最近做了一个导入excel的功能,需求:
1.将模板放到resources目录下,尽量创建一个专门的文件夹来存放模板,如下:
这里我用到了两个依赖,一个是hutool目前最火的工具类,easyexcel基本上导入导出Excel都会用。
cn.hutool hutool-all 5.8.18 com.alibaba easyexcel 3.2.1
@GetMapping("/downInChargeOfTemplate")public void downInChargeOfTemplate(httpservletResponse response) { downloadService.downInChargeOfTemplate(response);}
import cn.hutool.core.io.IoUtil;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.springframework.stereotype.Service;import javax.servlet.Http.HttpServletResponse;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;@Servicepublic class DownloadService { public void downInChargeOfTemplate(HttpServletResponse response) { responseSetting(response, "各分任务负责人导入模板", ".xlsx", "application/vnd.openxmlfORMats-officedocument.spreadsheetml.sheet"); InputStream inputStream = null; OutputStream outputStream = null; try { // 读取文件的输入流 inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("templates/各分任务负责人导入模板.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream); outputStream = response.getOutputStream(); wb.write(outputStream); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); } finally { IoUtil.close(inputStream); IoUtil.close(outputStream); } } public void responseSetting(HttpServletResponse response, String fileName, String suffix, String contentType) { // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String newFileName = null; try { newFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // 当客户端请求的资源是一个可下载的资源(这里的“可下载”是指浏览器会弹出下载框或者下载界面)时,对这个可下载资源的描述(例如下载框中的文件名称)就是来源于该头域。 response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + newFileName + suffix); // 服务器告诉浏览器它发送的数据属于什么文件类型,也就是响应数据的MIME类型 response.setContentType(contentType); response.setCharacterEncoding("utf-8"); // 关闭缓存(HTTP/1.1) response.setHeader("Cache-Control", "no-store"); // 关闭缓存(HTTP/1.0) response.setHeader("Pragma", "no-cache"); // 缓存有效时间 response.setDateHeader("Expires", 0); }}
测试接口
补充知识
在拿到文件的InputStream输入流之后我们也可以不通过XSSFWorkbook将输入流写到输出流当中,可以直接使用流拷贝的方式,这种同样是可以完成导出模板功能的。
关于导入功能,直接参考easyexcel官网即可:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read
来源地址:https://blog.csdn.net/weixin_43888891/article/details/130108377
--结束END--
本文标题: Java下载excel模板文件
本文链接: https://www.lsjlt.com/news/372931.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0