前言:相信看过上篇 使用POI处理常见的文件类型 的童鞋已经知道了,这是一篇填坑文
正文:OK,废话不多说,让百度词条给我们解释解释什么叫TMD惊喜
简单一下词条给出的释意:(CSV)逗号分隔值文件格式,逗号分隔值,其文件以纯文本形式存储表格数据
那我们大家立刻开始试试吧!
这里的导出的方式,采用的比较常规的以流的写回浏览器
/** * 导出临时文件 * * @param response * @return */ @GetMapping("/exportTempFile") @ApiOperation("导出临时文件") @ControllerLog(desc = "导出临时文件") public void exportTempFile(HttpServletResponse response) { try { //导出临时文件,导出格式为csv文件 fundPoolService.exportResult(response); } catch (Exception e) { log.error("exportTempFile 导出临时文件异常 error {}.param:{}",e,JSONObject.toJSONString(response)); } }
获取文件名的时候,需要注意不同系统路径问题
/** * 导出临时文件 * * @param response * @return */ public void exportResult(HttpServletResponse response){ BufferedWriter csvWtriter = null; try { // 表格头 Object[] head = {"xx1", "xx2", "xx3"}; List<Object> headList = Arrays.asList(head); File resultFile = new File(fixTempFile()); if(ObjectUtils.isEmpty(resultFile)){ throw new BusinessException("导出临时文件异常,临时文件不存在"); } //按行读取结果文件 List<List<Object>> dataList = createDataList(new ArrayList<>()); //文件名 String fileName = FileUtil.readString(fixFileTime(),"UTF-8"); //文件下载 response.setContentType("application/csv;charset=gb18030"); response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); ServletOutputStream out = response.getOutputStream(); csvWtriter = new BufferedWriter(new OutputStreamWriter(out, "GB2312"), 1024); // 写入文件头部 writeRow(headList, csvWtriter); // 写入文件内容 for (List<Object> row : dataList) { writeRow(row, csvWtriter); } csvWtriter.flush(); } catch (Exception e) { log.error("ExportResult info error.param:{}", JSONObject.toJSONString(response), e); } finally { try { if(!ObjectUtils.isEmpty(csvWtriter)){ csvWtriter.close(); } } catch (IOException e) { log.error("ExportResult info error.param:{}", JSONObject.toJSONString(response), e); } } }