企业如何通过vue小程序开发满足高效运营与合规性需求
795
2022-11-19
谷粒学院(九)EasyExcel | 课程分类模块
文章目录
一、EasyExcel 简介
1、Excel导入导出的应用场景2、EasyExcel特点3、案例1:EasyExcel进行Excel写操作4、案例2:EasyExcel进行Excel读操作
二、课程分类添加功能(后端)
1、引入easyexcel依赖2、使用代码生成器把课程分类代码生成3、创建实体类和excel对应关系4、编写 EduSubjectController 类5、编写EduSubjectServiceImpl 类6、创建读取Excel-7、重启oss服务,Swagger中测试文件上传
三、课程分类添加功能(前端)
1、添加课程分类路由2、创建课程分类页面,修改路由对应的页面路径3、在添加课程分类页面实现效果4、启动服务测试
四、课程分类列表(后端)
1、根据返回数据创建对应实体类2、编写Controller类3、编写Service类4、使用swagger进行测试
五、课程分类列表(前端)
1、编写前端接口2、参考tree模块把前端整合出来3、前端接口调用4、启动项目服务测试
一、EasyExcel 简介
1、Excel导入导出的应用场景
数据导入:减轻录入工作量数据导出:统计信息归档数据传输:异构系统之间数据传输
2、EasyExcel特点
Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。
EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。
EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。
3、案例1:EasyExcel进行Excel写操作
1、pom中引入xml相关依赖
2、创建实体类
@Datapublic class WriteData { //设置excel表头名称 @ExcelProperty("学生编号") private Integer sno; @ExcelProperty("学生姓名") private String sname;}
3、实现写操作
public static void testWrite(){ //实现excel的写操作 //1.设置写入文件夹地址和excel名称 String filename = "F:\\write.xlsx"; //2.调用easyexcel里面的方法实现写操作 EasyExcel.write(filename, WriteData.class).sheet("学生列表").doWrite(getData());}public static List
4、案例2:EasyExcel进行Excel读操作
1、创建实体类并标记对应列关系
@Datapublic class ReadData { //设置excel表头名称 @ExcelProperty(index = 0) private Integer sno; @ExcelProperty(index = 1) private String sname;}
2、创建-进行excel文件读取
public class ExcelListner extends AnalysisEventListener
3、进行读操作
public static void testRead(){ String filename = "F:\\write.xlsx"; EasyExcel.read(filename,ReadData.class,new ExcelListner()).sheet().doRead();}
二、课程分类添加功能(后端)
核心:EasyExcel读取excel内容实现
1、引入easyexcel依赖
2、使用代码生成器把课程分类代码生成
3、创建实体类和excel对应关系
@Datapublic class SubjectData { @ExcelProperty(index = 0) private String oneSujectName; @ExcelProperty(index = 1) private String twoSujectName;}
4、编写 EduSubjectController 类
@Api(description = "课程分类")@RestController@RequestMapping("/eduservice/subject")@CrossOriginpublic class EduSubjectController { @Autowired private EduSubjectService eduSubjectService; //添加课程分类 @ApiOperation(value = "添加课程分类") @PostMapping("addSubjects") public R addSubjects(MultipartFile file){ boolean flag = eduSubjectService.saveSubjects(file); if(flag){ return R.ok().message("文件导入成功!"); }else{ return R.error().message("文件导入失败!"); } }}
5、编写EduSubjectServiceImpl 类
@Servicepublic class EduSubjectServiceImpl extends ServiceImpl
6、创建读取Excel-
public class SubjectExcelListner extends AnalysisEventListener
7、重启oss服务,Swagger中测试文件上传
path: '/subject', component: Layout, //布局 redirect: '/subject/table', name: 'SubjectSort', meta: { title: '课程分类管理', icon: 'nested' }, children: [{ path: 'list', name: 'EduSubjectList', component: () => import ('@/views/edu/subject/list'), meta: { title: '课程分类列表', icon: 'table' } }, { path: 'import', name: 'EduSubjectImport', component: () => import ('@/views/edu/subject/import'), meta: { title: '导入课程分类', icon: 'tree' } } ] }
2、创建课程分类页面,修改路由对应的页面路径
3、在添加课程分类页面实现效果
编写页面:
编写js方法:
4、启动服务测试
四、课程分类列表(后端)
1、根据返回数据创建对应实体类
//一级分类@Datapublic class OneSubject { private String id; private String title; //一个一级分类里面有多个二级分类 private List
//二级分类@Datapublic class TwoSubject { private String id; private String title;}
返回数据格式为:
2、编写Controller类
@ApiOperation(value = "查询所有课程分类")@GetMapping("getAllSubject")public R getAllSubject(){ List
3、编写Service类
//查询所有的课程分类==>树形 @Override public List
4、使用swagger进行测试
…
五、课程分类列表(前端)
1、编写前端接口
import request from '@/utils/request'export default { //查询所有的课程分类 getAllSubject() { return request({ url: `/eduservice/subject/getAllSubject`, method: 'get' }) }}
2、参考tree模块把前端整合出来
3、前端接口调用
4、启动项目服务测试
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~