首先再项目的maven中添加相关依赖
<!-- EasyExcel依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.3</version>
</dependency>
封装一个Excel工具类,
/**
* Excel操作工具
*/
public class ExcelHelper {
/**
* 生成文件路径,文件名为时间戳
* 先获取系统的临时文件目录,如何定义文件名格式,两者进行拼接为绝对路径调用输出接口
* @param list 导出数据集合
* @param clazz 集合对象(两者元素需要保持一致)
* @return
*/
public static String writeExcel(List list ,Class clazz) {
//获取系统文件路径
String tmpPath = System.getProperty("java.io.tmpdir")+ File.separator;
//获取文件名
String fileName = System.currentTimeMillis() + ".xlsx";
String filePath = tmpPath + fileName;
writeExcelFile(list,filePath,clazz);
return filePath;
}
/**
*将数据写入指定文件
* 第一步;在绝对路径下新建目标文件,判断文件是否存在,如果文件不存在,创建一个目标文件
* 第二步;调用EasyExcel工具的write方法执行写入数据操作
* @param list 数据集合
* @param filePath 文件绝对路径
* @param clazz 输出实例
* @return
*/
public static String writeExcelFile(List list,String filePath ,Class clazz) {
File file = new File(filePath);
if (!file.exists()) {
try {
log.info("将导出{}条数据,文件路径{}",list.size(),filePath);
file.createNewFile();
} catch (IOException e) {
log.error("文件创建失败:{}",e.getMessage());
return "";
}
}
//执行写入操作
EasyExcel.write(filePath,clazz).sheet("sheet1").doWrite(list);
//(拓展)一般会在这调用文件上传接口上传到服务器,成功后将本地文件删除
return file.getName();
}
}
接下来创建一个导出excel的数据对象实例
/**
* 导出用户信息表格类
*/
@Data
@ColumnWidth(value = 30)
public class ExcelUserInfoBO implements Serializable {
private static final long serialVersionUID = 3901876623626426187L;
@ExcelProperty(value = "用户id",index = 0)
private Long userId;
/**
* 用户名
*/
@ExcelProperty(value = "用户姓名",index = 1)
private String userName;
/**
* 1:超级管理员,2:采购人员,3:销售人员,4:查询人员
*/
@ExcelProperty(value = "权限id",index = 2)
private Long authId;
/**
* 密码
*/
@ExcelProperty(value ="密码" ,index = 3)
private String userPassword;
/**
* 权限名称
*/
@ExcelProperty(value = "权限名称",index = 4)
private String authName;
}
最后调用ExcelHelper.writeExcel方法将要导出你想的数据集合和集合元素对象放进去就可以生成excel了,返回文件的绝对路径。
eg:
C:\Users\ADMINI~1\AppData\Local\Temp\\1637054665712.xlsx
表格内容;