工作中经常会遇到需要导出数据的需求,这种需求怎么实现呢?今天就来说一说。
- 导入依赖:
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
- 声明一个要导出字段的实体类:
@Data
@ToString
public class ExcelBean implements Serializable {
private static final long serialVersionUID = 767640658573170069L;
@ExcelProperty("字段一")
@ColumnWidth(20)
private String fieldOne;
@ExcelProperty("字段二")
@ColumnWidth(24)
private String fieldTwo;
}
其中@ExcelProperty
会显示在Excel的表头,@ColumnWidth
是这一列的宽度。
- 查询数据,这里就不写代码了,按照自己的需求去查询;
- 声明一个Set,把本次要写入Excel的字段都添加到Set里。这里可以灵活一些,比如可以按照不同的类型导出不同的字段。
Set<String> includeColumnFiledNames = new HashSet<String>();
includeColumnFiledNames.add("fieldOne");
if(type == Constants.OK){
includeColumnFiledNames.add("fieldTwo");
}
这样只有type等于OK的时候才会导出字段二。
- 将Excel写入response的输出流:
EasyExcel.write(response.getOutputStream(), ExcelBean.class).includeColumnFiledNames(includeColumnFiledNames【Set的变量名】).sheet("【导出的Excel名称】.xlsx").doWrite(【查出来的数据】);
这样就完成了一个简单的Excel文件下载操作。
网友评论