- 引入easyexcel依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
- 编写接口
@PostMapping("/export")
public void exportExcel(@RequestBody List<Long> ids, HttpServletResponse response) {
List<Order> orderList = orderService.listByIds(ids);
try {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
EasyExcel.write(response.getOutputStream(), Order.class)
.autoCloseStream(true).build()
.write(() -> orderList, new WriteSheet()).finish();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
- 前端发起导出请求并下载
const exportExcel = async () => {
axios({
url: url地址,
method: 'POST',
responseType: 'blob',
data: 批量导出的数据id,
headers: {
'Authorization': token
}
}).then((response) => {
const blob = new Blob([response.data], {type: 'application/vnd.ms-excel'});
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = '订单表.xlsx';
link.click();
URL.revokeObjectURL(link.href);
}).catch((error) => {
console.error('下载失败:', error);
});
}