赞
踩
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
/** * easyExcel导入方式 * @return */ @PostMapping("/importExcel") public R<?> importExcel(){ //导入需要添加一个监听 //1. 明确导入文件的所在位置 String path = "C:\\Users\\YKT\\Desktop\\临时\\car.xls"; //创建读入的excel的构造器 告诉其文件位置,要读那个java对象 以及读取监听器 //读取之后 在监听器中插入数据库, 这里的 Excel 是表字段 实体类 // 由于在监听器中 无法直接注入 mapper 或者service (使用 @Autowired 注入会包空指针异常),所以在这里我需要将mapper 直接set 进去,才能够去操作数据库 ExcelReader build = EasyExcel.read(path,Excel.class,new ExcelListener(excelMapper)).build(); // 0 表示只导入第一个sheet表中的数据 ReadSheet readSheet = EasyExcel.readSheet(0).build(); build.read(readSheet); build.finish(); return R.ok("导入成功!"); }
package com.example.car.carmall.Listenner; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.example.car.carmall.domain.Excel; import com.example.car.carmall.mapper.ExcelMapper; import java.text.SimpleDateFormat; import java.util.Date; /** * @author wcb 导入excel 监听器 * 创建读取监听器类 继承 AnalysisEventListener类 并将其要读取成的java对象传入泛型 * @date 2022 年 01月 13 日 11:42 */ public class ExcelListener extends AnalysisEventListener<Excel> { /** * 引入接口 */ ExcelMapper mapper; /** * 我们通过构造函数从外部传入接口 * @param mapper */ public ExcelListener(ExcelMapper mapper){ this.mapper = mapper; } /** * 逐行读取 读取之后 在监听器中插入数据库 * @param excel * @param analysisContext */ @Override public void invoke(Excel excel, AnalysisContext analysisContext) { SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); System.out.println(dfs.format(new Date()) +" ====== "+excel); //加入数据库 mapper.insertIntoExcel(excel); } /** * 读取完毕触发执行 * @param analysisContext */ @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { System.out.println("finish"); } }
package com.example.car.carmall.domain; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; /** * (OutCarManage)实体类 * 可以在实体类中添加注解 设置表格的宽度 * @author makejava * @since 2021-10-05 13:36:12 */ @Data @AllArgsConstructor @NoArgsConstructor @TableName(value = "out_car_manage") public class Excel implements Serializable { private static final long serialVersionUID = 256489227461452689L; /** * 主键id */ @ExcelProperty(index = 0,value = "数据编号") private String id; /** * 车牌 */ @ExcelProperty(index = 1,value = "车牌") private String carNo; /** * 车型 */ @ExcelProperty(index = 2,value = "车型") private String carType; /** * 借调方 */ @ExcelProperty(index = 3,value = "车辆来源") private String carResources; /** * 借调方电话 */ @ExcelProperty(index = 4,value = "借调电话") private String carPhone; /** * 借调天数 */ @ExcelProperty(index = 5,value = "借调时长") private String day; /** * 借调价格 */ @ExcelProperty(index = 6,value = "价格") private String price; /** * 时长 */ @ExcelProperty(index = 7,value = "使用天数") private String useTime; /** * 出租价格 */ @ExcelProperty(index = 8,value = "价格") private String outPrice; /** * 订单总价 */ @ExcelProperty(index = 9,value = "订单总价") private String totalPrice; /** * 顾客姓名 */ @ExcelProperty(index = 10,value = "顾客姓名") private String custName; /** * 顾客电话 */ @ExcelProperty(index = 11,value = "顾客电话") private String custPhone; /** * 订单来源 */ @ExcelProperty(index = 12,value = "订单来源") private String orderResource; /** * 目的地 */ @ExcelProperty(index = 13,value = "目的地") private String address; /** * 开始时间 */ @ExcelProperty(index = 14,value = "开始时间") private String startTime; /** * 创建时间 在表格中不需要显示的内容 使用注解 @ExcelIgnore */ @ExcelIgnore private String createTime; /** * 结束时间 */ @ExcelProperty(index = 15,value = "结束时间") private String endTime; /** * 押金 */ @ExcelProperty(index = 16,value = "押金") private String deposit; /** * 退回押金时间 */ @ExcelProperty(index = 17,value = "押金退还时间") private String backTime; /** * 备注 */ @ExcelProperty(index = 18,value = "备注") private String remark; /** * 订单状态 0 未删除 1 已删除 */ @ExcelIgnore private String status; }
/** * 导出 表格 * @return */ @PostMapping("/export") public R<?> export(){ //添加导出位置存放导出的excel文件 String path = "C:\\Users\\YKT\\Desktop\\临时\\car.xls"; //从数据库中获取需要导出的数据 Excel 实体类 List<Excel> list = excelService.getList(); //设置存放路径和表格中显示格式顺序 //创建easyExcel的写出类构造器,参数,告诉构造器 我的excel 将来要写在哪里,以及excel数据是基于那个java对象模板创建的 ExcelWriter excelWriter = EasyExcel.write(path,Excel.class).build(); //sheet表名 创建sheet构造器 WriteSheet sheet = EasyExcel.writerSheet("out_car_manage").build(); //将数据放入表中 使用excel对象将数据写入到excel中 excelWriter.write(list,sheet); //关闭 excelWriter.finish(); return R.ok("导出成功!"); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。