當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot整合easyexcel实现导入导出
生活随笔
收集整理的這篇文章主要介紹了
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实现导入导出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MybatisPlus操作模板
- 下一篇: Mongodb知识总结