前端
<form action="/upload" enctype="multipart/form-data" method="post">
<div>选择文件 <input type="file" name="upload"></div>
<input type="submit" value="提交">
</form>
<a href="/download">文件下载</a>
依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.14</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
实现
@PostMapping("/upload")
@ResponseBody
public String upload(MultipartFile upload) throws IOException {
System.out.println("文件名称"+upload.getOriginalFilename());
String filePath ="d:\\123.xlsx";
upload.transferTo(new File(filePath));
List<AppUpDto> arrayList =new ArrayList<>();
EasyExcel.read(filePath, AppUpDto.class, new PageReadListener<AppUpDto>(dataList -> {
for (AppUpDto dto : dataList) {
System.out.println("读取到一条数据:"+ JSON.toJSONString(dto));
if (dto.getHeadsetType().contains("Hero")){
arrayList.add(dto);
}
}
})).sheet().doRead();
EasyExcel.write(filePath, AppUpDto.class)
.sheet("模板")
.doWrite(() -> {
return arrayList;
});
return "success";
}
@GetMapping("/download")
public void downLoad(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
File file = new File("d:\\123.xlsx");
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + file.getName());
InputStream in = null ;
ServletOutputStream out =null;
try {
in = new FileInputStream(file);
out = response.getOutputStream();
byte[] b = new byte[1024];
int length = 0;
while((length=in.read(b))!= -1){
out.write(b,0,length);
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
in.close();
}catch (Exception e){
e.printStackTrace();
}
try {
out.flush();
out.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
pojo类
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@EqualsAndHashCode
public class AppUpDto {
@ExcelProperty("用例编号")
private String caseNo;
@ExcelProperty
private String authoer;
@ExcelProperty
private String headsetType;
}