springboot-实现csv文件导出功能

excle文件导出,会遇到一个65535行限制的问题,就是导出的数据行数超过65535行就会导出失败,这个是excle本生的限制,这种情况下通常将导出的格式改成csv这样就可以跨过这个限制,同时生成的csv文件用office打开浏览效果与打开excle没有区别可以完美替代。

1、依赖(比导出excle还少两个依赖)

复制代码
 <!--csv导出依赖 -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.1</version>
        </dependency>

2、代码

复制代码
@PostMapping("/csvExport")
    @ResponseBody
    public  void csvExport(HttpServletResponse response) {
        //表头
        List<String> headerList = Arrays.asList("编号", "姓名");

        // 创建工作簿
        Workbook workbook = new XSSFWorkbook();
        // 创建工作表
        Sheet sheet = workbook.createSheet("Sheet1");
        // 创建表头行
        Row headerRow = sheet.createRow(0);
        // 写入表头
        for (int i = 0; i < headerList.size(); i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(headerList.get(i));
        }
        // 组织数据
        List<List<Object>> data = new ArrayList<>();

        List list1 = Arrays.asList("001","张三");
        List list2 = Arrays.asList("002","李四");
        List list3 = Arrays.asList("003","王五");
        List list4 = Arrays.asList("004","王五");
        data.add(list1);
        data.add(list2);
        data.add(list3);
        data.add(list4);

        // 写入数据
        for (int i = 0; i < data.size(); i++) {
            Row row = sheet.createRow(i + 1);
            List<Object> rowData = data.get(i);
            for (int j = 0; j < rowData.size(); j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue(rowData.get(j).toString());
            }
        }
        //response为HttpServeltReponse对象
        response.setContentType(MediaType.TEXT_PLAIN_VALUE + ";charset=utf-8");
        response.setHeader("Content-Disposition", "attachment;filename=1.csv");
        try {
            workbook.write(response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭工作簿,释放内存
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

3、postman调用

4、导出效果

源码获取方式(免费):

(1)登录-注册:http://resources.kittytiger.cn/

(2)签到获取积分

(3)搜索:springboot-csvExport csv文件导出

相关推荐
下次再写1 天前
Java互联网大厂面试技术问答实战:涵盖Java SE、Spring Boot、微服务及多场景应用
java·数据库·缓存·面试·springboot·microservices·技术问答
程序员老邢2 天前
【技术底稿 18】FTP 文件处理 + LibreOffice Word 转 PDF 在线预览 + 集群乱码终极排查全记录
java·经验分享·后端·pdf·word·springboot
DavidSoCool2 天前
Springboot AI 创建MCP Server
java·spring·ai·大模型·springboot·mcp
下次再写4 天前
互联网大厂Java面试三轮技术问答及详解——涵盖Spring Boot与微服务
java·springboot·microservices·interview
吕永强5 天前
基于SpringBoot+Vue校园报修系统的设计与实现(源码+论文+部署)
vue·毕业设计·springboot·毕业论文·报修系统·校园报修
Flittly6 天前
【SpringSecurity新手村系列】(3)自定义登录页与表单认证
java·笔记·安全·spring·springboot
Flittly8 天前
【SpringSecurity新手村系列】(2)整合 MyBatis 实现数据库认证
java·安全·spring·springboot·安全架构
极光代码工作室8 天前
基于SpringBoot的在线考试系统
java·springboot·web开发·后端开发
YDS8298 天前
大营销平台 —— 抽奖规则决策树
java·springboot·ddd
码农张310 天前
自定义跨字段校验必填注解
springboot