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);
            }
        }
    }
相关文章
|
6月前
|
XML Java Maven
springboot-多环境配置文件
本文介绍了如何创建开发和生产环境的配置文件,并在IDEA和Maven中进行配置。开发环境中,通过设置profile为`dev`来指定配置文件;生产环境中,使用Maven命令参数`-Pprod`打包并指定配置文件。公共配置可放在`application.yml`中统一管理。日志配置需确保`logback-spring.xml`中的profile正确,以保证日志正常输出。
321 4
springboot-多环境配置文件
|
5月前
|
XML 前端开发 Java
SpringBoot实现文件上传下载功能
本文介绍了如何使用SpringBoot实现文件上传与下载功能,涵盖配置和代码实现。包括Maven依赖配置(如`spring-boot-starter-web`和`spring-boot-starter-thymeleaf`)、前端HTML页面设计、WebConfig路径映射配置、YAML文件路径设置,以及核心的文件上传(通过`MultipartFile`处理)和下载(利用`ResponseEntity`返回文件流)功能的Java代码实现。文章由Colorful_WP撰写,内容详实,适合开发者学习参考。
465 0
|
7月前
|
存储 前端开发 Java
Springboot静态资源映射及文件映射
在Spring Boot项目中,为了解决前端访问后端存储的图片问题,起初尝试通过静态资源映射实现,但发现这种方式仅能访问打包时已存在的文件。对于动态上传的图片(如头像),需采用资源映射配置,将特定路径映射到服务器上的文件夹,确保新上传的图片能即时访问。例如,通过`addResourceHandler(&quot;/img/**&quot;).addResourceLocations(&quot;file:E:\\myProject\\forum_server\\&quot;)`配置,使前端可通过URL直接访问图片。
394 0
Springboot静态资源映射及文件映射
|
4月前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
|
5月前
|
SQL 前端开发 Java
深入理解 Spring Boot 项目中的分页与排序功能
本文深入讲解了在Spring Boot项目中实现分页与排序功能的完整流程。通过实际案例,从Service层接口设计到Mapper层SQL动态生成,再到Controller层参数传递及前端页面交互,逐一剖析每个环节的核心逻辑与实现细节。重点包括分页计算、排序参数校验、动态SQL处理以及前后端联动,确保数据展示高效且安全。适合希望掌握分页排序实现原理的开发者参考学习。
305 4
|
6月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
10月前
|
Java 开发者 微服务
手写模拟Spring Boot自动配置功能
【11月更文挑战第19天】随着微服务架构的兴起,Spring Boot作为一种快速开发框架,因其简化了Spring应用的初始搭建和开发过程,受到了广大开发者的青睐。自动配置作为Spring Boot的核心特性之一,大大减少了手动配置的工作量,提高了开发效率。
176 0
|
5月前
|
存储 Java 定位技术
SpringBoot整合高德地图完成天气预报功能
本文介绍了如何在SpringBoot项目中整合高德地图API实现天气预报功能。从创建SpringBoot项目、配置依赖和申请高德地图API开始,详细讲解了实体类设计、服务层实现(调用高德地图API获取实时与预报天气数据)、控制器层接口开发以及定时任务的设置。通过示例代码,展示了如何获取并处理天气数据,最终提供实时天气与未来几天天气预报的接口。文章还提供了测试方法及运行步骤,帮助开发者快速上手并扩展功能。
|
10月前
|
网络协议 Java
springboot配置hosts文件
springboot配置hosts文件
152 11
|
10月前
|
消息中间件 缓存 Java
手写模拟Spring Boot启动过程功能
【11月更文挑战第19天】Spring Boot自推出以来,因其简化了Spring应用的初始搭建和开发过程,迅速成为Java企业级应用开发的首选框架之一。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,帮助读者深入理解其工作机制。
131 3