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文件,并通过遍历行来获取数据。以上代码示例仅为简化版,实际应用中可能需要根据具体业务需求进行调整和完善。