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

news/2024/7/21 3:47:56 标签: excel, java

 

目录

1、POI的三个依赖

2、控制层代码

3、业务层代码

4、参考文献:


 

1、POI的三个依赖

<!-- 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


http://www.niftyadmin.cn/n/5171167.html

相关文章

JAIN SIP API详解与GB28181服务器实现

目录 JAIN SIP API 摘要 关于JAIN SIP API API概述 maven坐标 类/接口 Message接口 Request接口 Response接口 即时通讯程序 TextClient代码概述 Message Processor SIP协议栈 发送SIP请求 发送会话消息 接收SIP响应 接收SIP请求 处理错误 总结 GB28181SIP…

深入理解JVM虚拟机第二十三篇:详解JVM当中的栈顶缓存技术

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JVM 本文章简介:话不多说,让我们讲清楚JVM当中与操作数栈相关的字节码指令…

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:

错误描述如下所示&#xff1a; 我们将错误拉到最下面如下所示为导致异常的原因&#xff1a; Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type com.example.reviewmybatisplus.Service.UserService available: expec…

Netty--NIO(Non-blocking IO)基础--三大组件

NIO&#xff08;Non-blocking IO&#xff09;是一种非阻塞的IO模型&#xff0c;它通过引入Channel和Selector的概念&#xff0c;使得一个线程能够管理多个通道&#xff0c;从而提高了IO操作的效率。本文将介绍NIO的三大组件&#xff1a;Channel、Buffer、以及Selector&#xff…

数据管理系统-week1-介绍

文章目录 一、数据它是什么&#xff1f;二、电子存储设备三、持久存储设备1、硬盘驱动器&#xff08;HDD&#xff09;、硬盘、硬盘驱动器是一种用于存储和检索数字信息的机电持久存储设备。2、固态硬盘&#xff08;SSD&#xff09;使用非易失性存储器&#xff0c;即使用NAND闪存…

JWT概念(案例代码)

JWT&#xff08;JSON Web Token&#xff09;是一种在网络应用间传递信息的标准方法&#xff0c;它使用JSON对象作为发出方和接收方之间的交换格式&#xff0c;用于验证和授权。JWT由三部分组成&#xff1a;Header、Payload和Signature。 Header&#xff1a;包含了JWT的类型、加…

Mac电脑Visio文件编辑查看软件推荐Visio Viewer for Mac

mac版Visio Viewer功能特色 在Mac OS X上查看Visio绘图和图表 在Mac OS X上轻松查看MS Visio文件 在Mac上快速方便地打开并阅读Visio文件&#xff08;.vsd&#xff0c;.vsdx&#xff09;。 支持通过放大&#xff0c;缩小&#xff0c;旋转&#xff0c;文本选择和复制&#xff0…

Rust教程6:并发编程和线程通信

文章目录 线程初步join方法线程通信 Rust系列&#xff1a;初步⚙所有权⚙结构体和枚举类⚙函数进阶⚙泛型和特征 线程初步 在Rust中&#xff0c;开启多线程进行并发编程&#xff0c;只需调用thread::spawn&#xff0c;但这里有一个坑点&#xff0c;即spawn函数只有一个传入参…