java导出excel 前后端写法
时间: 2023-07-26 09:04:54 浏览: 115
Java 导出 Excel 有多种方式,其中一种较常见的方式是使用 Apache POI 库来操作 Excel,以下是一个简单的示例代码:
```java
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建标题行
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("姓名");
row.createCell(1).setCellValue("年龄");
row.createCell(2).setCellValue("性别");
// 填充数据
List<User> userList = userService.getUserList();
for (int i = 0; i < userList.size(); i++) {
User user = userList.get(i);
Row dataRow = sheet.createRow(i + 1);
dataRow.createCell(0).setCellValue(user.getName());
dataRow.createCell(1).setCellValue(user.getAge());
dataRow.createCell(2).setCellValue(user.getGender());
}
// 设置响应头
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-disposition", "attachment;filename=user_list.xlsx");
// 输出 Excel 文件
workbook.write(response.getOutputStream());
```
在前端,你可以使用 AJAX 或者表单提交的方式来触发这个导出操作。以下是一个使用 AJAX 的示例代码:
```javascript
function exportExcel() {
$.ajax({
url: '/user/export',
type: 'GET',
success: function(data) {
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
var filename = 'user_list.xlsx';
if (window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveBlob(blob, filename);
} else {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
link.click();
}
}
});
}
```
在这个示例中,我们使用 AJAX 发送一个 GET 请求到后端的 `/user/export` 接口,后端会返回一个 Excel 文件的字节流。前端通过创建一个 Blob 对象来保存这个字节流,并将其转换为一个可下载的文件。如果浏览器支持 msSaveOrOpenBlob 方法,我们可以直接使用该方法来保存文件,否则我们需要创建一个下载链接并模拟点击该链接来下载文件。
阅读全文