版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24615069/article/details/82080166
1.导入依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.0.5</version>
</dependency>
<!--推荐引入poi-ooxml,这个包会自动关联引入poi包,且可以很好的支持Office2007+的文档格式,高于3.17-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<!--如果需要使用Sax方式读取Excel,需要引入以下依赖,高于2.11.0-->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>
2.导出操作
/**
* 导出用户,一个controller写完,方便展示
* 使用的mybatis-generator简化CRUD
* 防止引入的包错了,这里指出来
* import cn.hutool.core.collection.CollUtil;
* import cn.hutool.poi.excel.ExcelUtil;
* import cn.hutool.poi.excel.ExcelWriter;
*/
@GetMapping(value = "/exportExcel")
public Result<Object> exportExcel() {
//从数据库拿出要存放excel表的数据,并记录数据量
TUserExample example = new TUserExample();
example.createCriteria().andIsDeleteEqualTo("-1");
List<TUser> users = tUserMapper.selectByExample(example);
int count = tUserMapper.countByExample(example);
//创建存放excel每列的excel表
List<List<String>> table = new ArrayList<>();
//设置excel表的标题列
String[] title = new String[]{"用户名", "姓名", "手机号", "办公电话", "证件类型", "证件号", "状态", "备注"};
List<String> titleRow = CollUtil.newArrayList(title);
table.add(titleRow);
//设置每列的属性值,count为一共有多少列,及数据库表查询出来的数据量
for (int i = 0; i < count; i++) {
TUser user = users.get(i);
//每列属性值,要与title对应存放
List<String> row = CollUtil.newArrayList(user.getNickname(), user.getRealname(), user.getPhone(), user.getOfficePhone(),
user.getCertificateType(), user.getCertificateCode(), user.getState(), user.getNotes());
//将每列放入excel表中
table.add(row);
}
CollUtil.newArrayList(table);
//通过工具类创建writer
ExcelWriter writer = ExcelUtil.getWriter("d:/user.xlsx");
//一次性写出内容
writer.write(table);
//关闭writer,释放内存
writer.close();
return new ResultUtil<>().setData(null, "导出excel成功");
}