项目笔记之EasyPoi的使用
官方文档教程网址:http://easypoi.mydoc.io/
业务需求,以及应用场景:
项目中需要实现表格的导出导入
使用技术
springboot,easyPoi
此处只写实现代码,不写详细解释,详细解释说明可参考文档
实体类:
package com.huiani.entity;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelCollection;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.Column;
import javax.persistence.Id;
import java.util.Date;
import java.io.Serializable;
import java.util.List;
/**
* (Album)实体类
*
* @author makejava
* @since 2019-12-06 11:47:31
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class Album implements Serializable {
@Id
@Excel(name = "专辑编号",width = 50,needMerge = true)
private String id;
@Excel(name = "专辑标题",needMerge = true)
private String title;
private String content;
@Excel(name = "专辑作者",needMerge = true)
private String author;
private String boyin;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "addTime")
@Excel(name = "添加时间",width = 30,format = "yyyy-MM-dd")
private Date addTime;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "updateTime")
private Date updateTime;
@Excel(name = "封面",width =30,height = 15,type = 2,needMerge = true)
private String src;
private Integer amount;
@ExcelCollection(name = "专辑下对应的章节")
private List<Chapter> chapters;
private Double score;
private String state;
}
控制器层代码:
//导出专辑表格一对多导出
@RequestMapping("exportAlbum")
public void exportAlbum(HttpServletRequest request, HttpServletResponse response){
//因为导出需要导出图片,所以此处需要获取图片文件夹的绝对路径
String realPath = request.getSession().getServletContext().getRealPath("/img");
//查出数据库信息专辑信息
List<Album> albums = albumService.findAll1();
for (Album album : albums) {
Chapter chapter=new Chapter();
chapter.setAlbumId(album.getId());
//查询专辑下面的章节
List<Chapter> chapters = chapterDao.select(chapter);
//把章节信息存进专辑内
album.setChapters(chapters);
//获取图片路径既是文件名加后缀名
String src = album.getSrc();
//从新设置一下图片路径,方便导出时寻找图片位置
album.setSrc(realPath+"/"+src);
}
//生成表格文档,设置标题,以及一对多的标题
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("所有专辑统计", "章节"),Album.class,albums);
try {
//设置表格名字
String filename="专辑信息"+new Date().toString()+".xls";
//设置响应类型
response.setContentType("application/vnd.ms-excel");
//设置响应头
response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
//用流写
workbook.write(response.getOutputStream());
//关闭流
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
注意事项:
@Excel(name = “封面”,width =30,height = 15,type = 2,needMerge = true)
private String src;
此处可参考文档 属性type表示保存形式2为图片,默认1为文本 needMerge为是否纵向合并单元格
官方给的注解文档
来源:CSDN
作者:向往生活的码农
链接:https://blog.csdn.net/weixin_43790879/article/details/103689658