SSM导出Excel

本文介绍了一种使用Java SSM框架结合layui工具,实现在Web应用中导出Excel文件的方法。涵盖了从开发工具选择、技术选型到各层代码实现的详细步骤,包括Mapper、service、Controller及前端jsp的配置。最后展示了导出效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

layui 导出Excel
开发工具:eclipse、 mysql
技术架构:javaSSM、 layui
工具类

package com.hezuo.utils;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;

public class ExcelExportData extends AbstractExcelView{
	private String[] titles;
	
	// 传入指定的标题头
	public ExcelExportData(String[] titles) {
		this.titles = titles;
	}

	@Override
	protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		//获取数据
				@SuppressWarnings("unchecked")
				List<Map<String, String>> list=(List<Map<String, String>>) model.get("excelList");
				//在workbook添加一个sheet
				HSSFSheet sheet=workbook.createSheet();
				sheet.setDefaultColumnWidth(15);
				HSSFCell cell=null;
				//遍历标题
				for (int i = 0; i 
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)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值