java后台实现excel文件下载功能
java中对于excel文件的操作,有读取,写入,上传等功能,在对excel文件进行操作时,为了让使用者更加直观的制作excel数据,必然会有下载模板excel文件功能,这里以学生基本信息模板excel文件为例,实现对指定路径下的excel文件进行下载的后台代码。
对excel文件的操作使用到poi接口,对于不同拓展名的excel文件调用不同的对象,maven导入jar包语句可以参考poi导入jar包。
我们在这里操作的对象是.xlsx格式的excel文件。代码如下:
/** * 学生excel模板下载,可用于批量新建,修改学生对象, * * @param response * @param request * @return */ @RequestMapping(value = "downLoadStuInfoExcel", produces = "text/html;charset=UTF-8") public void downLoadStuInfoExcel(HttpServletResponse response, HttpServletRequest request) { JSONObject rt = new JSONObject(); //json对象,用来记录下载状态值,写入log中,也可以把状态值返回到前台,这一部分可有可无。 rt.put("status", "1"); rt.put("message", ""); rt.put("result", ""); //学生新建excel下载模板保存地址从配置文件中读取 String folderPath = ResourceBundle.getBundle("systemconfig").getString("stuExcelDownLoadPath") + File.separator + "stuTemplateExcel.xlsx"; File excelFile = new File(folderPath); //判断模板文件是否存在 if (!excelFile.exists() || !excelFile.isFile()) { rt.put("status", "0"); rt.put("message", "模板文件不存在"); // return rt.toJSONString(); } //文件输入流 FileInputStream fis = null; XSSFWorkbook wb = null; //使用XSSFWorkbook对象读取excel文件 try { fis = new FileInputStream(excelFile); wb = new XSSFWorkbook(fis); fis.close(); } catch (Exception e) { e.printStackTrace(); rt.put("status", "0"); rt.put("message", "模板文件读取失败"); // return rt.toJSONString(); } //设置contentType为vnd.ms-excel response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setCharacterEncoding("utf-8"); // 对文件名进行处理。防止文件名乱码,这里前台直接定义了模板文件名,所以就不再次定义了 //String fileName = CharEncodingEdit.processFileName(request, "stuTemplateExcel.xlsx"); // Content-disposition属性设置成以附件方式进行下载 response.setHeader("Content-disposition", "attachment;filename=stuTemplateExcel.xlsx"); //调取response对象中的OutputStream对象 OutputStream os = null; try { os = response.getOutputStream(); wb.write(os); os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); rt.put("status", "0"); rt.put("message", "模板文件下载失败"); } logger.info("下载学生模板文件结果:" + rt.toJSONString()); //return rt.toJSONString(); }
注意事项:
- 对excel文件读取使用了FileInputStream对象,然后生成新的XSSFWorkbook对象
- 在文件的读取和写入的动作完成后,把对应的流关闭
下载得到的excel模板文件:
以上就是对Java中下载excel文件后台处理的总结归纳。欢迎一起探讨更加高效的解决方案
版权声明:本文为obonika原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。