一、引入依赖
<!--xls-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!--xlsx-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<!--excel-->
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
二、前端的内容(如何发送数据给后台)
1.需要一个button按钮
<%--导出excel表格--%>
<el-button type="primary" @click="ExportData">导出</el-button>
2.element-ui表单组件及复选框

通过这两个组件实现将复选框选中的表单数据传递给后台
复选框的使用
(1)我们需要将我们要导出的表单的第一列添加复选框
<%--选择框--%>
<el-table-column type="selection" width="40">
</el-table-column>
(2)在data数据存放区域定义我们选中数据的存放数组
//选择框选择的数据
data:{
//复选框选中的数据
selectionData:[],
}
(3)获取选中数据的方法
handleSelectionChange(val) {
this.selectionData = val;
//我们也可以采用以下方法获取
/* for(var i = 0;i < val.length;i++){
this.selectionData.push(val[i]);
}*/
},
此时我们已经做到能够获取到选中的表单数据了
3.向后端发起请求(导出button按钮的点击事件)
我们需要将选中的数据发送给后台
ExportData(){
//这里是向后端发送请求
axios.post("/inventory/ExportData",this.selectionData).then(function (result){
//这里是后端返回的数据
if(result.data.code===2000){
that.$message.success(result.data.msg);
}
})
},
三、后端接收数据()
1.entity层我们要封装一个导出数据的实体类,属性一定要与前端发送给后台的数据相对应
(1)我们封装实体类的属性其实就是们导出excel表格的标题
(2)为每个属性加上标题注解@ExcelProperty("你的字段名称")
(3)一定要有lombok
lombok的依赖
<!--lombok依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IntoryData {
@ExcelProperty("盘点编号")
private String invenId;
@ExcelProperty("盘点员")
private String staffName;
@ExcelProperty("盘点时间")
private String invenTime;
@ExcelProperty("审核员")
private String auditName;
@ExcelProperty("审核时间")
private String examTime;
@ExcelProperty("state")
private String state;
@ExcelProperty("所属分店")
private String branchName;
}
2.Controller层接收前端发送的数据
Controller层和Service层先写哪一个都可以
//导出excel表格方法
@RequestMapping("/ExportData")
public CommonResult ExportData(HttpServletResponse response, @RequestBody List<IntoryData> params){
System.out.println(params);
CommonResult commonResult = exportDataService.ExportData(response,params);
return commonResult;
}
3.Service层的方法
@Service
public class ExportDataServiceImpl implements ExportDataService {
public CommonResult ExportData(HttpServletResponse response, List<IntoryData> params) {
//实现excel写的操作
//1、设置写入文件夹地址和excel文件名称
//我们也可以通过工具随机生成名字
//随机生成字符串String s = UUID.randomUUID().toString();
/*生成当前年月日+随机字符串
Calendar calendar=Calendar.getInstance();
String name=calendar.get(Calendar.YEAR)+"/"+(calendar.get(Calendar.MONTH)+1)+"/"+calendar.get(Calendar.DATE)+"/"+ UUID.randomUUID().toString()*/
//这个是我们固定设置的名字
String fileName = "E://盘点信息.xlsx";
//2、调用EasyExcel里面方法实现写的操作
//write两个参数:参数1:文件路径名称 参数2:参数实体类class
EasyExcel.write(fileName,IntoryData.class).sheet("盘点信息").doWrite(params);
return new CommonResult(2000,"导出成功",null);
}
}
该博客介绍了如何在Java后端使用EasyExcel库来处理Excel数据导出。首先,引入Apache POI和EasyExcel的依赖。然后,前端通过Element-UI表单组件和复选框选择需要导出的数据,并通过axios发送POST请求到后台。在后端,创建一个实体类对应Excel的列标题,并使用Lombok简化代码。最后,Controller层接收请求,Service层调用EasyExcel的写操作将数据写入Excel并返回响应。
1万+





