EasyExcel
添加插件
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency>
1、最简单例子——识别单列项目
-
- 第一步:创建VO类
-
- 目的:方便识别
-
import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; /** * @author DBC * @version 1.0 * @date 2022-01-17 15:12 */ @Data public class IMEIExcelVO { //设置excel表头名称 @ExcelProperty("产品条码") private String UPCCode; }
-
- 第二步:监听类(可加各种优化操作)
-
/** * @author DBC * @version 1.0 * @date 2022-01-17 15:21 */ /*** * 监听器 */ public class ExcelModelListener extends AnalysisEventListener<IMEIExcelVO> { private List<IMEIExcelVO> list = new ArrayList<IMEIExcelVO>(); private static int count = 1; @Override public void invoke(IMEIExcelVO data, AnalysisContext context) { System.out.println("解析到一条数据:{ "+ data.toString() +" }"); list.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext context) { System.out.println("全部数据解析完成!"); } public List<IMEIExcelVO> getData() { return list; } }
-
- 直接一览,没有实现类,强行实现
- Controller
-
@PostMapping(value = "/paseUploadExcelUPCCode") public RespInfo paseUploadExcelUPCCode(@RequestPart("file") MultipartFile file) throws Exception { ExcelModelListener listener = new ExcelModelListener(); // 定义的 listener EasyExcel.read(file.getInputStream(), IMEIExcelVO.class, listener).sheet().headRowNumber(1).doRead(); List<IMEIExcelVO> entities = listener.getData(); // 处理数据 StringBuilder res = new StringBuilder(); for (int i = 0 ;i<entities.size();i++){ if (i == entities.size()-1){ res.append(entities.get(i).getUPCCode()); }else { res.append(entities.get(i).getUPCCode()+","); } } log.info("解析处理后的数据:"+res); return new RespInfo().ok(res); }
-
- Controller
- 第一步:创建VO类
2、简单导出数据
@GetMapping("upDate") public JsonData upDate() { List<TbUserDO> list = tbUserMapper.selectList(new QueryWrapper<TbUserDO>().like("name","D")); // 写法1 JDK8+ // since: 3.0.0-beta1 String fileName = "C:\\Users\\dbc\\Desktop\\dbc\\simpleWrite" + System.currentTimeMillis() + ".xlsx"; // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭 // 如果这里想使用03 则 传入excelType参数即可 EasyExcel.write(fileName, DemoData.class) .sheet("模板") .doWrite(() -> { // 分页查询数据 return list; }); return JsonData.buildSuccess(); }
看看效果
本文作者为DBC,转载请注明。