SpringBoot实现CSV文件导出功能

简介: 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);
            }
        }
    }
相关文章
|
4天前
|
消息中间件 缓存 Java
手写模拟Spring Boot启动过程功能
【11月更文挑战第19天】Spring Boot自推出以来,因其简化了Spring应用的初始搭建和开发过程,迅速成为Java企业级应用开发的首选框架之一。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,帮助读者深入理解其工作机制。
21 3
|
4天前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
20 0
|
17天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
95 62
|
14天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
53 1
SpringBoot获取项目文件的绝对路径和相对路径
|
8天前
|
网络协议 Java
springboot配置hosts文件
springboot配置hosts文件
35 11
|
14天前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
54 8
|
13天前
|
存储 前端开发 JavaScript
|
13天前
|
存储 Java API
|
16天前
|
Java
springboot将list封装成csv文件
springboot将list封装成csv文件
20 4
|
15天前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
34 2