springboot使用hutool实现导入导出
1、maven依赖
<!--导出 导入-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.20</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
2、 Excel导入到数据库
注意 :如果excel表格头为中文则需在实体类使用 @Alias注解 设置别名
import cn.hutool.core.annotation.Alias;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@EqualsAndHashCode
@TableName("au_info")
public class Info {
@Alias("编号")
private Long id;
@Alias("名称")
private String name;
@Alias("简介")
private String info;
@Alias("价格")
private Integer price;
@Alias("更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@Alias("发布时间")
@TableField(fill = FieldFill.INSERT)
private Date publishTime;
@Alias("是否删除(0-未删除 1-已删除")
private Integer delField;
//版本
@Alias("版本")
private Integer version;
}
@SneakyThrows
@PostMapping("/importExcel")
public ResponseResult importExcel(MultipartFile file) throws IOException {
InputStream inputStream = file.getInputStream();
ExcelReader reader = ExcelUtil.getReader(inputStream);
//注意 这里的参数 是List集合中的实体类型
List<Info> list = reader.readAll(Info.class);
//批量插入
insureInfoService.saveBatch(list);
return ResponseResult.okResult();
}
3、导出到EXCEL表格(浏览器下载)
@SneakyThrows
@GetMapping("/exportExcel")
public ResponseResult exportExcel(HttpServletRequest request, HttpServletResponse response) {
//数据库查询数据
List<Info> list = infoService.list();
//写出浏览器
ExcelWriter writer = ExcelUtil.getWriter();
//自定义标题名
// 注意:如果不设置自定义标题名 则默认为为实体类字段
writer.addHeaderAlias("id", "编号");
writer.addHeaderAlias("name", "名称");
writer.addHeaderAlias("info", "简介");
writer.addHeaderAlias("price", "价格");
writer.addHeaderAlias("updateTime", "更新时间");
writer.addHeaderAlias("publishTime", "发布时间");
writer.addHeaderAlias("delField", "是否删除(0-未删除 1-已删除");
writer.addHeaderAlias("version", "版本");
//一次性写 默认样式 强制输出标题
writer.write(list, true);
//设置浏览器响应格式
response.setContentType("application/vnd.openxmlformats-officedocument.sepreadsheetml.sheet;charset=utf-8");
String fileName = URLEncoder.encode("基本信息", "UTF-8");
//设置文件名
response.setHeader("Content-Disposition", "attachemnt;filename=" + fileName + ".xlsx");
//开写!
ServletOutputStream outputStream = response.getOutputStream();
//缓冲 写到excel
writer.flush(outputStream, true);
//关闭资源
outputStream.close();
writer.close();
return ResponseResult.okResult();
}