SpringBoot Excel导入导出

天使之翼 2024-03-22 ⋅ 28 阅读

导入Excel数据

SpringBoot提供了很多方便的方式来导入Excel数据。下面是使用poi和EasyExcel两种方式的示例。

使用poi导入Excel数据

首先,我们需要在pom.xml文件中添加poi和poi-ooxml的依赖:

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

然后,我们创建一个Excel导入的控制器:

@RestController
public class ExcelImportController {

    @PostMapping("/import-excel")
    public String importExcel(@RequestParam("file") MultipartFile file) throws IOException {
        Workbook workbook = WorkbookFactory.create(file.getInputStream());
        Sheet sheet = workbook.getSheetAt(0);
        
        // 处理Excel数据
        
        workbook.close();
        
        return "Excel导入成功";
    }
}

使用EasyExcel导入Excel数据

EasyExcel是一款基于poi封装的更加便捷的Excel处理工具。我们可以通过在pom.xml文件中添加EasyExcel的依赖来使用它:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.11</version>
</dependency>

然后,我们创建一个Excel导入的控制器:

@RestController
public class ExcelImportController {

    @PostMapping("/import-excel")
    public String importExcel(@RequestParam("file") MultipartFile file) throws IOException {
        EasyExcel.read(file.getInputStream(), DemoData.class, new DemoDataListener()).sheet().doRead();
        
        return "Excel导入成功";
    }

    public static class DemoDataListener extends AnalysisEventListener<DemoData> {

        @Override
        public void invoke(DemoData data, AnalysisContext context) {
            // 处理Excel数据
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
            // 导入完成后的操作
        }
    }
}

导出Excel数据

与导入Excel数据类似,SpringBoot也提供了多种方式来导出Excel数据。

使用poi导出Excel数据

首先,我们需要在pom.xml文件中添加poi和poi-ooxml的依赖(同导入Excel数据的步骤)。

然后,我们创建一个Excel导出的控制器:

@RestController
public class ExcelExportController {

    @GetMapping("/export-excel")
    public void exportExcel(HttpServletResponse response) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");
        
        // 填充Excel数据
        
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachment;filename=data.xlsx");
        workbook.write(response.getOutputStream());
        workbook.close();
    }
}

使用EasyExcel导出Excel数据

EasyExcel同样提供了方便的导出Excel数据的功能。

首先,我们需要在pom.xml文件中添加EasyExcel的依赖(同导入Excel数据的步骤)。

然后,我们创建一个Excel导出的控制器:

@RestController
public class ExcelExportController {

    @GetMapping("/export-excel")
    public void exportExcel(HttpServletResponse response) throws IOException {
        EasyExcel.write(response.getOutputStream(), DemoData.class).sheet("Sheet1").doWrite(getData());
    }

    private List<DemoData> getData() {
        // 获取要导出的数据
    }
}

导入导出Excel数据的注意事项

  • 导入Excel数据时,需要根据Excel的格式进行逐行处理。
  • 导出Excel数据时,需要将要导出的数据填充到Excel的对应位置。
  • 在处理大量数据时,为避免内存溢出,可以使用分批读取或写入的方式。

以上就是使用SpringBoot导入导出Excel数据的方法。希望对你有所帮助!


全部评论: 0

    我有话说: