c语言编程笔录

首页 >   > 笔记大全

笔记大全

SpringBoot如何实现导入导出Excel文档

更新时间:2023-08-30

前言

在使用Spring Boot开发Web应用时,经常会遇到需要导入或导出Excel文档的需求。导入导出Excel文档是一种常见的数据交换方式,可以方便地将数据从数据库或其他数据源导出到Excel中,或者将Excel中的数据导入到数据库中。本文将介绍如何使用Spring Boot实现导入导出Excel文档的功能。

导出Excel文档

要实现导出Excel文档的功能,首先需要导入相关的依赖。在Maven项目中,可以添加以下依赖:

<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>

上述依赖是使用Apache POI库进行Excel文件的操作。接下来,需要编写导出Excel的代码。以下是一个简单的示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

// 略去import语句

public class ExcelExporter {

    public static void export(List<User> userList, HttpServletResponse response) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("User List");

        // 创建表头
        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("ID");
        headerRow.createCell(1).setCellValue("Name");
        headerRow.createCell(2).setCellValue("Email");

        // 填充数据
        int rowNum = 1;
        for (User user : userList) {
            Row row = sheet.createRow(rowNum++);
            row.createCell(0).setCellValue(user.getId());
            row.createCell(1).setCellValue(user.getName());
            row.createCell(2).setCellValue(user.getEmail());
        }

        // 设置文件名和响应类型
        response.setHeader("Content-Disposition", "attachment;filename=users.xlsx");
        response.setContentType("application/vnd.ms-excel");

        // 将工作簿写入响应输出流
        workbook.write(response.getOutputStream());
        workbook.close();
    }
}

上述代码中,首先创建了一个Workbook对象,然后创建Sheet,并在Sheet中创建表头和填充数据。最后设置响应头和类型,将工作簿写入响应输出流。

导入Excel文档

要实现导入Excel文档的功能,同样需要使用Apache POI库。接下来,我们编写一个示例代码来演示导入Excel的过程:

import org.apache.poi.ss.usermodel.*;

// 略去import语句

public class ExcelImporter {

    public static List<User> importUsers(MultipartFile file) throws IOException {
        List<User> userList = new ArrayList<>();

        Workbook workbook = WorkbookFactory.create(file.getInputStream());
        Sheet sheet = workbook.getSheetAt(0);

        // 遍历行并读取数据
        for (Row row : sheet) {
            User user = new User();
            user.setId((int) row.getCell(0).getNumericCellValue());
            user.setName(row.getCell(1).getStringCellValue());
            user.setEmail(row.getCell(2).getStringCellValue());
            userList.add(user);
        }

        workbook.close();

        return userList;
    }
}

上述代码中,首先使用WorkbookFactory来创建Workbook对象,然后获取Sheet,并遍历每一行来读取数据。最后将读取的数据存入User对象,并将User对象添加到列表中返回。

总结

通过使用Apache POI库,我们可以很方便地实现Spring Boot中的Excel导入导出功能。导出Excel文档可以使用Workbook对象创建Sheet并填充数据,然后将工作簿写入响应输出流;导入Excel文档可以使用WorkbookFactory读取Excel文件,并通过遍历行来获取数据。以上代码示例仅为简化版,实际应用中可能需要根据具体业务需求进行调整和完善。