日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot整合easyexcel实现导入导出

發布時間:2024/10/6 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot整合easyexcel实现导入导出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、excel讀寫測試

1.導入依賴

<properties><easyexcel.version>2.2.0-beta2</easyexcel.version> </properties><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version> </dependency>

2.創建實體類

@Data public class User {@ExcelProperty(index = 0,value = "用戶編號")private int id;@ExcelProperty(index = 1,value = "用戶姓名")private String userName; }

3.寫入excel文件

public class WriteTest {public static void main(String[] args) {List<User> list=new ArrayList<>();for (int i = 0; i < 10; i++) {User user=new User();user.setId(i);user.setUserName("candy"+i);list.add(user);}String path="F:\\git\\ShangGuiGu\\excel\\01.xlsx";EasyExcel.write(path,User.class).sheet("用戶信息").doWrite(list);} }

4.讀excel文件

4.1.讀之前要添加監聽器

public class EventListener extends AnalysisEventListener<User>{/*** 從第二行開始一行一行讀取* @param user 實體類* @param analysisContext 內容*/@Overridepublic void invoke(User user, AnalysisContext analysisContext) {System.out.println(user);}/*** 讀取第一行* @param headMap* @param context*/@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("頭信息"+headMap);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {}}

4.2讀excel文件

public class ReadTest {public static void main(String[] args) {String file="F:\\git\\ShangGuiGu\\excel\\01.xlsx";EasyExcel.read(file,User.class, new EventListener()).sheet().doRead();} }

二、excel整合SpringBoot

1.編寫實體類

@Data public class DictEeVo {/*** 屬性上添加注解,設置表頭內容*/@ExcelProperty(value = "id" ,index = 0)private Long id;@ExcelProperty(value = "上級id" ,index = 1)private Long parentId;@ExcelProperty(value = "名稱" ,index = 2)private String name;@ExcelProperty(value = "值" ,index = 3)private String value;@ExcelProperty(value = "編碼" ,index = 4)private String dictCode;}

2.編寫mapper文件

@Repository public interface DictMapper extends BaseMapper<Dict> { }

3.編寫監聽器

/*** @FileName: DictListener* @Author Steven* @Date: 2021/3/17*/public class DictListener extends AnalysisEventListener<DictEeVo>{@AutowiredDictMapper dictMapper;public DictListener(DictMapper dictMapper) {this.dictMapper=dictMapper;}@Overridepublic void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {Dict dict=new Dict();BeanUtils.copyProperties(dictEeVo,dict);dictMapper.insert(dict);}@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {} }

3.編寫service接口

public interface DictService extends IService<Dict>{/*** 導出* @param response*/void exportData(HttpServletResponse response);/*** @param multipartFile 導入字典*/void importDictData(MultipartFile multipartFile); }

3.編寫service實現類

@Service public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements DictService { @Overridepublic void exportData(HttpServletResponse response) {try {response.setContentType("application/json");response.setCharacterEncoding("UTF-8");String fileName = URLEncoder.encode("數據字典", "UTF-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");List<Dict> dictList = dictMapper.selectList(null);List<DictEeVo> dictVos = new ArrayList<>(dictList.size());for (Dict dict : dictList) {DictEeVo dictVo = new DictEeVo();BeanUtils.copyProperties(dict, dictVo);dictVos.add(dictVo);}EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("數據字典").doWrite(dictVos);} catch (Exception e) {throw new YyghException("數據導出失敗!!!", 123);}}/*** 調用后清空所有方法** @param multipartFile 導入字典*/@CacheEvict(value = "dict", allEntries = true)@Overridepublic void importDictData(MultipartFile multipartFile) {try {EasyExcel.read(multipartFile.getInputStream(), DictEeVo.class, new DictListener(baseMapper)).sheet().doRead();} catch (IOException e) {e.printStackTrace();}} }

4.編寫controller

@Api(tags = "數據字典接口") @RestController @RequestMapping("/admin/cmn/dict") public class DictController { @ApiOperation("數據導出")@GetMapping("/exportData")public Result exportData(HttpServletResponse response){dictService.exportData(response);return Result.ok();}@ApiOperation("導入字典數據")@PostMapping("/importData")public Result importData(MultipartFile file){dictService.importDictData(file);return Result.ok();} }

總結

以上是生活随笔為你收集整理的SpringBoot整合easyexcel实现导入导出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。