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文件后台处理的总结归纳。欢迎一起探讨更加高效的解决方案
来源:oschina
链接:https://my.oschina.net/u/4391471/blog/3298025