springMVC 导出Excel ,并提供下载(处理日期格式问题)

目录

1、POI的三个依赖

2、控制层代码

3、业务层代码

4、参考文献:


1、POI的三个依赖

XML 复制代码
<!-- POI的三个依赖 -->
     	<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi</artifactId>
		    <version>4.1.2</version>
		</dependency>
		<dependency>
			   <groupId>org.apache.poi</groupId>
			    <artifactId>poi-ooxml-schemas</artifactId>
			    <version>4.1.2</version>
		</dependency>
			<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
		<dependency>
			    <groupId>org.apache.poi</groupId>
			    <artifactId>poi-ooxml</artifactId>
			    <version>4.1.2</version>
		</dependency>

2、控制层代码

java 复制代码
@RequestMapping("/exportExcel.ctrl")
	@ResponseBody
	ResponseEntity<byte[]> exportExcel(PlcFirst record) throws UnsupportedEncodingException {
		return plcFirstService.exportExcel(record);
	}

3、业务层代码

java 复制代码
    public ResponseEntity<byte[]> exportExcel(PlcFirst record) throws UnsupportedEncodingException {
		//1、 根据条件查询需要的数据
		List<PlcFirst> list = plcFirstMapper.selectPage2(record);
		//2、创建一个excel并写入内容
        HSSFWorkbook workbook=new HSSFWorkbook();
        HSSFSheet sheet=workbook.createSheet("Sheet1");
        //3、填写表头
        HSSFRow row=sheet.createRow(0);
        HSSFCell cell=row.createCell(0);
        cell.setCellValue("序列号");
        HSSFCell cell1=row.createCell(1);
        cell1.setCellValue("工序号");
        HSSFCell cell2=row.createCell(2);
        cell2.setCellValue("扭矩");
        HSSFCell cell3=row.createCell(3);
        cell3.setCellValue("角度");
        HSSFCell cell4=row.createCell(4);
        cell4.setCellValue("OK/NG");
        HSSFCell cell5=row.createCell(5);
        cell5.setCellValue("工具号");
        HSSFCell cell6=row.createCell(6);
        cell6.setCellValue("打印码");
        HSSFCell cell7=row.createCell(7);
        cell7.setCellValue("创建时间");

        // 创建日期格式的单元格格式
 		DataFormat dataFormat = workbook.createDataFormat();
 		CellStyle cellStyle = workbook.createCellStyle();
 		cellStyle.setDataFormat(dataFormat.getFormat("yyyy-MM-dd HH:mm:ss"));
        
        // 4、遍历数据,并写入Excel。
        int i=1;
        for (PlcFirst plc : list) {
        	HSSFRow rowi = sheet.createRow(i++);
        	rowi.createCell(0).setCellValue(plc.getSerNo());
        	rowi.createCell(1).setCellValue(plc.getGongXuHao());
        	rowi.createCell(2).setCellValue(plc.getNiuJu());
        	rowi.createCell(3).setCellValue(plc.getJiaoDu());
        	rowi.createCell(4).setCellValue(plc.getOkNg());
        	rowi.createCell(5).setCellValue(plc.getGongJuHao());
        	rowi.createCell(6).setCellValue(plc.getDaYinMa());
        	HSSFCell cell77 = rowi.createCell(7);
        	cell77.setCellValue(plc.getCreateTime());
        	// 设置单元格格式为日期格式
        	cell77.setCellStyle(cellStyle);
		}
        // EEEEE
        
        //创建一个字节数组输出流对象
        ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
        try {
     	   //将excel写入输出流
            workbook.write(outputStream);
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
     
	     HttpHeaders headers=new HttpHeaders();
	     String fileName=new String("excel.xls".getBytes("UTF-8"),"iso-8859-1");
	     headers.setContentDispositionFormData("attachment", fileName);
	     headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
	     
	     ResponseEntity<byte[]> returnFile=new ResponseEntity<byte[]>
	                         (outputStream.toByteArray(),headers,HttpStatus.CREATED);
	     try {
	         outputStream.close();
	     } catch (IOException e) {
	         e.printStackTrace();
	     }
			
		return returnFile;
	}

4、参考文献:

https://www.cnblogs.com/cmelody/p/7066232.html

相关推荐
heartbeat..几秒前
深入理解 JVM:从核心原理到实战应用
java·jvm·jdk·学习笔记
独自破碎E2 分钟前
数组列表中的最大距离
java
猿小羽4 分钟前
基于 Spring AI 与 Streamable HTTP 构建 MCP Server 实践
java·llm·spring ai·mcp·streamable http
大模型微调Online7 分钟前
深度复盘:Qwen3-4B-Instruct-2507微调实战——打造“快思考、强执行”的 ReAct IoT Agent
java·后端·struts
铁蛋AI编程实战9 分钟前
Agentic AI/GPT-4o替代/Spring AI 2.0/国产大模型轻量化
java·人工智能·spring
weixin_7042660510 分钟前
Maven入门:构建与依赖管理全解析
java·maven
cyforkk11 分钟前
14、Java 基础硬核复习:数据结构与集合源码的核心逻辑与面试考点
java·数据结构·面试
零度@14 分钟前
专为 Java 开发者 整理的《Python编程:从入门到实践》前8章核心内容
java·开发语言·windows·python
一嘴一个橘子16 分钟前
idea Could not autowire. No beans of ‘xxxMapper‘ type found
java
海边的Kurisu17 分钟前
苍穹外卖日记 | Day9 用户端历史订单模块、商家端订单管理模块、用户下单功能优化
java·苍穹外卖