ssm导出excel前后端分离代码
时间: 2024-08-14 08:00:40 浏览: 59
在SSM(Spring + Spring MVC + MyBatis)架构下实现Excel文件的前后端分离,通常涉及到以下几个步骤:
1. **后端处理**:
- 使用Spring框架提供的`ResponseEntity`或`RestTemplate`发送HTTP响应。当用户请求导出Excel时,服务层会生成一个包含数据的`DataFrame`(使用Apache POI库如`pandas`)或其他类似的数据结构。
- 将数据转换为`ExcelWriter`(例如`XSSFWorkbook`),然后设置响应头,指定Content-Type为`application/vnd.ms-excel`或`application/octet-stream`,以下载模式返回。
```java
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.apache.poi.ss.usermodel.Workbook;
@GetMapping("/export")
public ResponseEntity<byte[]> exportToExcel(@RequestParam("fileName") String fileName) {
// 假设data是需要写入Excel的数据
Workbook workbook = createWorkbook(data);
byte[] excelData = writeToByteArray(workbook); // 写入到字节数组
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName + ".xlsx");
return ResponseEntity.ok().headers(headers).body(excelData);
}
```
2. **前端接收并处理**:
- 客户端可以是一个SPA应用,通过AJAX或Fetch API向服务器发起GET请求。当接收到响应时,前端会检测响应头是否指示为下载,并触发下载操作。
- 如果使用Vue.js等前端框架,你可以监听`response`对象的`download`事件,引导浏览器下载文件。
```javascript
axios.get('/export', { params: { fileName: 'output' } })
.then(response => {
if (response.headers['content-disposition']) {
window.location.href = URL.createObjectURL(response.data);
}
})
.catch(error => console.error('Error exporting Excel:', error));
```
阅读全文