SpringBoot实现CSV文件导出功能

前言:相信看过上篇 使用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);
            }
        }
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章