使用spring boot整合EasyExcel实现excel表格的导入、导出功能
以下是使用Spring Boot整合EasyExcel实现Excel导入和导出功能的示例代码:
导入(读取)Excel文件:
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
// ...
public class ExcelDataListener extends AnalysisEventListener<MyDataModel> {
@Override
public void invoke(MyDataModel data, AnalysisContext context) {
System.out.println("读取到数据:" + data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 所有数据解析完成后做的事情
}
}
// 在Controller中处理文件上传
@PostMapping("/import")
public void importExcel(@RequestParam("file") MultipartFile file) throws IOException {
EasyExcel.read(file.getInputStream(), MyDataModel.class, new ExcelDataListener()).sheet().doRead();
}
导出(写入)Excel文件:
import com.alibaba.excel.EasyExcel;
import java.util.List;
// ...
@GetMapping("/export")
public void exportExcel(HttpServletResponse response) throws IOException {
List<MyDataModel> data = ...; // 获取数据源
String fileName = "导出数据.xlsx";
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"));
EasyExcel.write(response.getOutputStream(), MyDataModel.class).sheet("导出数据").doWrite(data);
}
在这两个示例中,MyDataModel
是一个Java类,用来映射Excel表中的数据。需要确保该类的字段和Excel表头对应。导入时,ExcelDataListener
扩展了AnalysisEventListener
,用于处理读取到的数据;导出时,直接使用EasyExcel的API将数据写入响应的输出流中。
注意:在实际应用中,你需要添加必要的异常处理和安全性检查,比如文件上传的大小限制、文件类型校验等。
评论已关闭