Springboot Excel最简单的多sheet表导入导出

冰山美人 2024-06-21 ⋅ 17 阅读

简介

在Java开发中,Excel的操作是非常常见的需求之一,而Spring Boot框架通过引入Apache POI库,提供了一种简洁高效的方式来实现Excel的导入和导出功能。本文将介绍如何使用Spring Boot实现最简单的多sheet表的Excel导入和导出。

导入Excel

添加依赖

首先,在pom.xml文件中添加以下依赖:

<dependencies>
    <!-- Spring Boot Web Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Apache POI -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>

创建实体类

创建一个User实体类,用于存储Excel中的数据:

public class User {
    private String name;
    private int age;
    // 省略getter和setter方法
}

编写Controller

创建一个UserController控制器,接收并处理Excel文件的导入请求:

@RestController
public class UserController {
    
    @PostMapping("/import")
    public String importExcel(@RequestParam("file") MultipartFile file) {
        try {
            Workbook workbook = WorkbookFactory.create(file.getInputStream());
            
            // 获取第一个sheet
            Sheet sheet = workbook.getSheetAt(0);
            
            List<User> userList = new ArrayList<>();
            
            // 遍历每一行
            for (Row row : sheet) {
                User user = new User();
                user.setName(row.getCell(0).getStringCellValue());
                user.setAge((int) row.getCell(1).getNumericCellValue());
                userList.add(user);
            }
            
            // 处理导入的数据
            // ...
            
            return "导入成功";
        } catch (IOException e) {
            return "导入失败:" + e.getMessage();
        }
    }
}

编写前端页面

创建一个表单页面,用于选择并上传Excel文件:

<!DOCTYPE html>
<html>
<head>
    <title>Excel导入</title>
    <meta charset="UTF-8">
</head>
<body>
    <form action="/import" method="POST" enctype="multipart/form-data">
        <input type="file" name="file" accept=".xlsx, .xls">
        <button type="submit">导入</button>
    </form>
</body>
</html>

导出Excel

添加依赖

同样,在pom.xml文件中添加以下依赖:

<dependencies>
    <!-- Spring Boot Web Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- Apache POI -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>

编写Controller

创建一个UserController控制器,接收并处理Excel文件的导出请求:

@RestController
public class UserController {
    
    @GetMapping("/export")
    public void exportExcel(HttpServletResponse response) {
        try {
            Workbook workbook = new XSSFWorkbook();
            
            // 创建第一个sheet
            Sheet sheet1 = workbook.createSheet("Sheet1");
            
            // 创建第二个sheet
            Sheet sheet2 = workbook.createSheet("Sheet2");
            
            // 向每个sheet中添加数据
            // ...
            
            response.setHeader("Content-Disposition", "attachment; filename=users.xlsx");
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            
            workbook.write(response.getOutputStream());
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

编写前端页面

创建一个下载链接,用于触发Excel文件的导出:

<!DOCTYPE html>
<html>
<head>
    <title>Excel导出</title>
    <meta charset="UTF-8">
</head>
<body>
    <a href="/export">导出Excel</a>
</body>
</html>

结语

本文介绍了如何使用Spring Boot实现最简单的多sheet表的Excel导入和导出功能。通过Apache POI库,我们可以方便地读取和写入Excel文件。希望本文对你的学习和工作有所帮助,谢谢阅读!


全部评论: 0

    我有话说: