springboot+jxls 根据Excel模板 填写数据并导出

springboot+jxls 根据Excel模板 填写数据并导出public void downExecl{Map map=new HashMap;//“classpath:static/excel/学生表格

大家好,欢迎来到IT知识分享网。

项目结构

springboot+jxls 根据Excel模板 填写数据并导出

pom.xml

 <!--jxls导出依赖jar包--> <dependency> <groupId>net.sf.jxls</groupId> <artifactId>jxls-core</artifactId> <version>1.0.6</version> <scope>compile</scope> </dependency>

学生信息表模板:

springboot+jxls 根据Excel模板 填写数据并导出

ExcelUtiles

package cn.bdqn.utils; import net.sf.jxls.transformer.XLSTransformer; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.util.ResourceUtils; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.Map; /** * @ProjectName: Student * @Author: huat * @Date: 2020/5/7 8:53 * @Version: 1.0 */ public class ExcelUtiles { /** * 输出表格 * @param map 表格中数据 * @param response 响应 * @param excelName 表格名称 * @param excelPath 表格模板保存的路径 */ public static void outExcel(Map<String,Object> map,HttpServletResponse response,String excelName,String excelPath){ File file=null; try { file= ResourceUtils.getFile(excelPath); } catch (FileNotFoundException e) { e.printStackTrace(); } //配置下载路径 String path = "/download/"; createDir(new File(path)); //根据模板生成新的excel File excelFile = createNewFile(map, file, path,excelName); //浏览器端下载文件 try { downloadFile(response, excelFile,excelName); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } //删除服务器生成文件 deleteFile(excelFile); } /** * 根据excel模板生成新的excel * @param beans 表格中的数据 * @param file 文件 * @param path 生成文件的位置 * @param excelName 文件名称 * @return */ private static File createNewFile(Map<String, Object> beans, File file, String path,String excelName) { XLSTransformer transformer = new XLSTransformer(); File newFile = new File(path + excelName+".xlsx"); try (InputStream in = new BufferedInputStream(new FileInputStream(file)); OutputStream out = new FileOutputStream(newFile)) { Workbook workbook = transformer.transformXLS(in, beans); workbook.write(out); out.flush(); return newFile; } catch (Exception e) { System.out.println(e.getMessage()); } return newFile; } /** * 将服务器新生成的excel从浏览器下载 * @param response 响应 * @param excelFile 表格文件 * @param excelName 表格名称 * @throws UnsupportedEncodingException */ private static void downloadFile(HttpServletResponse response, File excelFile,String excelName) throws UnsupportedEncodingException { /* 设置文件头:最后一个参数是设置下载文件名 */ response.setHeader("Content-type","application/vnd.ms-excel"); // 解决导出文件名中文乱码 response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition","attachment;filename="+new String(excelName.getBytes("UTF-8"),"ISO-8859-1")+".xlsx"); try ( InputStream ins = new FileInputStream(excelFile); OutputStream os = response.getOutputStream() ) { byte[] b = new byte[1024]; int len; while ((len = ins.read(b)) > 0) { os.write(b, 0, len); } } catch (IOException ioe) { ioe.printStackTrace(); } } /** * 浏览器下载完成之后删除服务器生成的文件 * 也可以设置定时任务去删除服务器文件 * * @param excelFile */ private static void deleteFile(File excelFile) { excelFile.delete(); } //如果目录不存在创建目录 存在则不创建 private static void createDir(File file) { if (!file.exists()) { file.mkdirs(); } } } 

Controller

 @RequestMapping("downExcel") public void downExecl(HttpServletResponse response){ Map<String,Object> map=new HashMap<String,Object>(); map.put("name","学生信息表"); //获取学生信息 map.put("studentList",studentService.getStudent()); //"classpath:static/excel/学生表格.xlsx" 表格模板保存路径,classpath:代表resources路径 ExcelUtiles.outExcel(map,response,"学生信息表","classpath:static/excel/学生表格.xlsx"); }

原文:https://my.oschina.net/u//blog/

作者:冥焱

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/46465.html

(0)
上一篇 2024-10-08 15:33
下一篇 2024-10-10 07:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信