700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > SpringBoot项目使用EasyExcel读取上传Excel

SpringBoot项目使用EasyExcel读取上传Excel

时间:2023-05-03 17:15:57

相关推荐

SpringBoot项目使用EasyExcel读取上传Excel

SpringBoot项目使用EasyExcel读取上传Excel

1、EasyExcel简介

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。

EasyExcel读取Excel的解析原理:

2、导入相应的依赖文件

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.3</version></dependency>

3、编写对应数据库字段的pojo类,使用注解注入

package com.ec.wlfxxt.db.po;import com.alibaba.excel.annotation.ExcelProperty;import lombok.Data;import javax.persistence.Id;import javax.persistence.Table;@Table(name = "t_test_user")@Datapublic class TestUser {//主键/*** ExcelProperty注解 index参数是指第几列,0为第一列,1为第二列 ,value是对应的内容列*/@ExcelProperty(index = 0)@Idprivate String userSid;@ExcelProperty(index = 1)private String userAccount;@ExcelProperty(index = 2)// @ExcelProperty(value = "用户姓名")private String userName;@ExcelProperty(index = 3)private Integer userSexSid;}

4、编写对应下载的接口文件

(这里为固定的模版,不需要可以的去记录,大概了解执行流程即可,取即可用)

UserController层

@PostMapping("/uploadLocal") //本地测试 @RequestParam("files")参数key名字public JsonResult uploadLocal(@RequestParam("files") MultipartFile[] excelFiles) throws IOException {// System.out.println("excelFile:"+excelFiles);if (excelFiles.length != 0) {if (userService.testExcelLocal( excelFiles) == 0){return new JsonResult(Constant.SUCCESS_CODE, "上传成功",null);}else {return new JsonResult(Constant.ERROR1_CODE, "文件保存失败",null);}}else {return new JsonResult(Constant.ERROR1_CODE, "文件不能为空",null);}}@PostMapping("/uploadServer")//服务器测试 @RequestParam("files")参数key名字public JsonResult uploadServer(@RequestParam("files") MultipartFile[] excelFiles) throws IOException {// System.out.println("excelFile:"+excelFiles);if (excelFiles.length != 0) {if (userService.testExcelServer( excelFiles) == 0){return new JsonResult(Constant.SUCCESS_CODE, "上传成功",null);}else {return new JsonResult(Constant.ERROR1_CODE, "文件保存失败",null);}}else {return new JsonResult(Constant.ERROR1_CODE, "文件不能为空",null);}}

UserServiceImpl层

//将文件存储到后读取public int testExcelLocal(MultipartFile[] excelFiles){//将文件存储到当前机器的某个目录String localPath = "E:\\JavaProject\\wlfxxt\\src\\main\\java\\com\\ec\\wlfxxt\\excelfile";for (MultipartFile excelFile:excelFiles) {//获取上传的文件的文件名 (ordersetting_template.xlsx)String originalFilename = excelFile.getOriginalFilename();String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));//生成一个唯一文件名String uniqueFilename = UUID.randomUUID().toString().replaceAll("-", "") + suffix;String dirPath = localPath ;//确保存放文件的目录是存在的File dirFile = new File(dirPath);if (!dirFile.exists()){dirFile.mkdirs();}//最终存放文件的文件路径String filePath = dirPath + "\\" + uniqueFilename;System.out.println(filePath);//保存文件try {excelFile.transferTo(new File(filePath));} catch (IOException e) {e.printStackTrace();return 1;}//读取上传后的文件中的内容,将数据添加/更新到ordersetting表中/*参数一File file: 要读取的目标文件参数二Class head :将目标文件中的行记录封装到java的那个类型对象参数三ReadListener readListener :读取过程中的回调对象(每读取一行,封装成一个对象后,都会触发这个对象的invoke方法)*/List<TestUser> testUsers = new ArrayList<>();EasyExcel.read(new File(filePath),TestUser.class,new SyncReadListener(){//读取每一行进行的操作@Overridepublic void invoke(Object object, AnalysisContext context) {testUsers.add((TestUser) object);}//读取表头@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("表头信息:"+headMap);}}).headRowNumber(3).doReadAll();//.headRowNumber(3)表示从第几行开始读取,有的文件title不在第一行System.out.println("===========");System.out.println(testUsers);// //更新或者添加// for (TestUser orderSetting : orderSettings) {// userMapper.insert(orderSetting);// }}return 0;}//将文件存储到后读取public int testExcelServer(MultipartFile[] excelFiles){//将文件存储到服务器的某个目录String localPath = "/usr/local/middleware/GIT_NTP_WLFXXT_Code_Mid/excleFile";for (MultipartFile excelFile:excelFiles) {//获取上传的文件的文件名 (ordersetting_template.xlsx)String originalFilename = excelFile.getOriginalFilename();String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));//生成一个唯一文件名String uniqueFilename = UUID.randomUUID().toString().replaceAll("-", "") + suffix;String dirPath = localPath;//确保存放文件的目录是存在的File dirFile = new File(dirPath);if (!dirFile.exists()){dirFile.mkdirs();}//最终存放文件的文件路径String filePath = dirPath + "/" + uniqueFilename;System.out.println(filePath);//保存文件try {excelFile.transferTo(new File(filePath));} catch (IOException e) {e.printStackTrace();return 1;}//读取上传后的文件中的内容,将数据添加/更新到ordersetting表中/*参数一File file: 要读取的目标文件参数二Class head :将目标文件中的行记录封装到java的那个类型对象参数三ReadListener readListener :读取过程中的回调对象(每读取一行,封装成一个对象后,都会触发这个对象的invoke方法)*/List<TestUser> testUsers = new ArrayList<>();EasyExcel.read(new File(filePath),TestUser.class,new SyncReadListener(){//读取每一行进行的操作@Overridepublic void invoke(Object object, AnalysisContext context) {testUsers.add((TestUser) object);}//读取表头@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("表头信息:"+headMap);}}).headRowNumber(3).doReadAll();//.headRowNumber(3)表示从第几行开始读取,有的文件title不在第一行System.out.println("===========");System.out.println(testUsers);// //更新或者添加// for (TestUser orderSetting : orderSettings) {// userMapper.insert(orderSetting);// }}return 0;}

5、postman测试接口

单个和多个文件都可

key 的名字要和controller代码RequestParam里面的一致

public JsonResult uploadLocal(@RequestParam(“files”)MultipartFile[] excelFiles) throws IOException {

}

}return 0;}

## 5、postman测试接口**单个和多个文件都可** key 的名字要和controller代码RequestParam里面的一致public JsonResult uploadLocal(**@RequestParam("files")** MultipartFile[] excelFiles) throws IOException {![image-031539481](https://img-/img_convert/bc111231dc8f7208ddaf965117b58167.png)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。