当前位置: 首页 > news >正文

springboot3导出数据库数据到excel

一、导入依赖

         <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.3.0</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>6.1.13</version></dependency>

二、实体类

package com.guide.entity;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.apache.poi.ss.usermodel.Sheet;/*** @author cxy* @create 2024-10-11 09:41:43*/@Data
@TableName("workpiece")
public class Workpiece {@TableId(value = "id", type = IdType.AUTO)@Schema(description = "id")private Integer id;@TableField(value = "vehicleModel")@Schema(description = "车型")private String vehicleModel;@TableField(value = "twoNum")@Schema(description = "轴二起始Num")private Integer twoNum;@TableField(value = "threeNum")@Schema(description = "轴三起始Num")private Integer threeNum;@TableField(value = "imgUrl")@Schema(description = "图片路径")private String imgUrl;public Workpiece(int id, String vehicleModel, int twoNum, int threeNum, String imgUrl) {this.id = id;this.vehicleModel = vehicleModel;this.twoNum = twoNum;this.threeNum = threeNum;this.imgUrl = imgUrl;}public Workpiece() {}
}

三、controller层 

package com.guide.controller;import cn.hutool.core.collection.CollUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.guide.entity.Workpiece;
import com.guide.result.Result;
import com.guide.service.WorkpieceService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;/*** @author cxy* @create 2024-10-12 10:12:02*/@Tag(name = "excel")
@RequestMapping("/excel")
@RestController
@CrossOrigin(origins = "*")
@Slf4j
@RequiredArgsConstructor
public class ExcelController {private final WorkpieceService service;private final JdbcTemplate jdbcTemplate;@PostMapping("/downWorkpiece")@Schema(description = "工件信息导出excel")public Result downWorkpiece(HttpServletResponse response) throws IOException {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Data");// 创建表头Row header = sheet.createRow(0);header.createCell(0).setCellValue("id");header.createCell(1).setCellValue("车型");header.createCell(2).setCellValue("轴二起始Num");header.createCell(3).setCellValue("轴三起始Num");header.createCell(4).setCellValue("图片路径");// 查询数据库并填充数据List<Workpiece> dataList = jdbcTemplate.query("SELECT id,vehicleModel,twoNum,threeNum,imgUrl FROM workpiece",(ResultSet rs, int rowNum) -> new Workpiece(rs.getInt("id"), rs.getString("vehicleModel"), rs.getInt("twoNum"), rs.getInt("threeNum"), rs.getString("imgUrl")));// 填充数据到Excel表格int rowNum = 1;for (Workpiece data : dataList) {Row row = sheet.createRow(rowNum++);row.createCell(0).setCellValue(data.getId());row.createCell(1).setCellValue(data.getVehicleModel());row.createCell(2).setCellValue(data.getTwoNum());row.createCell(3).setCellValue(data.getThreeNum());row.createCell(4).setCellValue(data.getImgUrl());}// 设置响应头response.setHeader("Content-Disposition", "attachment; filename=\"data.xlsx\"");response.setStatus(HttpServletResponse.SC_OK);// 写入响应流并下载文件ServletOutputStream outStream = response.getOutputStream();workbook.write(outStream);outStream.flush();workbook.close();return Result.success();}}

http://www.lryc.cn/news/463696.html

相关文章:

  • 十四、行为型(观察者模式)
  • 爬取简书1
  • 基于STM32单片机设计的矿山环境作业安全监测系统
  • 大数据linux操作系统
  • MySQL 【日期】函数大全(七)
  • IP报文格式、IPv6概述
  • 学习记录:js算法(六十七):任务调度器
  • 5分钟8图:Cursor如何让编程效率提升5倍?
  • 车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导
  • PACT 在微服务架构中的用途
  • LeetCode 3200.三角形的最大高度:枚举
  • ssm基于java的招聘系统设计与开发+vue
  • 【网络原理】TCP/IP五层网络模型之网络层-----IP协议详解,建议收藏!!
  • 三次握手与四次挥手
  • awk命令学习记录
  • 科大讯飞嵌入式面试题及参考答案
  • C Lua5.4.6 SDK开发库
  • 无线网卡知识的学习-- wireless基础知识(cfg80211)
  • Next.js 学习 - 路由系统(Routing)
  • Unity XR PICO 手势交互 Demo APK
  • EM算法学习
  • 019_基于python+django食品销售数据分析系统2024_4032ydxt
  • C语言笔记(数据的存储篇)
  • wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理的解决方法
  • CSS 居中那些事
  • Java项目-基于springboot框架的智能热度分析和自媒体推送平台项目实战(附源码+文档)
  • 跨平台进程池背后的思想
  • 前端性能优化之加载篇
  • 数据结构(栈)
  • Aspose.PDF功能演示:使用 JavaScript 从 PDF 中提取文本