Springboot项目查询mysql库导出Excel内容给前端,工具类

时间: 2024-03-05 22:51:40 浏览: 17
这里提供一个基于Spring Boot和Apache POI的工具类,可以方便地将MySQL数据库中的数据导出为Excel文件并返回给前端。 ```java import java.io.ByteArrayOutputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ExcelUtil { // MySQL数据库连接信息 private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/dbname"; private static final String USERNAME = "username"; private static final String PASSWORD = "password"; // 导出Excel文件 public static void exportExcel(String sql, HttpServletResponse response) throws IOException, SQLException { // 1. 获取数据库连接 Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); // 2. 执行SQL查询 PreparedStatement stmt = conn.prepareStatement(sql); ResultSet rs = stmt.executeQuery(); // 3. 获取查询结果列名和数据 ResultSetMetaData meta = rs.getMetaData(); int columnCount = meta.getColumnCount(); List<String> columnNames = new ArrayList<>(); List<List<Object>> data = new ArrayList<>(); for (int i = 1; i <= columnCount; i++) { columnNames.add(meta.getColumnName(i)); } while (rs.next()) { List<Object> rowData = new ArrayList<>(); for (int i = 1; i <= columnCount; i++) { rowData.add(rs.getObject(i)); } data.add(rowData); } // 4. 创建Excel工作簿对象 Workbook workbook = new HSSFWorkbook(); Sheet sheet = workbook.createSheet(); // 5. 设置列名样式 Font headerFont = workbook.createFont(); headerFont.setBold(true); headerFont.setColor(IndexedColors.WHITE.index); CellStyle headerStyle = workbook.createCellStyle(); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); headerStyle.setFillForegroundColor(IndexedColors.BLUE.index); headerStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); headerStyle.setFont(headerFont); // 6. 写入列名 Row headerRow = sheet.createRow(0); for (int i = 0; i < columnCount; i++) { headerRow.createCell(i).setCellValue(columnNames.get(i)); headerRow.getCell(i).setCellStyle(headerStyle); } // 7. 写入数据 for (int i = 0; i < data.size(); i++) { Row row = sheet.createRow(i + 1); for (int j = 0; j < columnCount; j++) { row.createCell(j).setCellValue(data.get(i).get(j).toString()); } } // 8. 将工作簿写入字节数组输出流 ByteArrayOutputStream out = new ByteArrayOutputStream(); workbook.write(out); // 9. 设置HTTP响应头 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=data.xls"); // 10. 将字节数组输出流写入响应流 ServletOutputStream outputStream = response.getOutputStream(); outputStream.write(out.toByteArray()); // 11. 关闭资源 outputStream.flush(); outputStream.close(); out.flush(); out.close(); rs.close(); stmt.close(); conn.close(); } } ``` 使用时,只需要调用`ExcelUtil.exportExcel(sql, response)`方法即可,其中`sql`参数为要执行的SQL查询语句,`response`参数为HTTP响应对象。

相关推荐

最新推荐

recommend-type

python3实现mysql导出excel的方法

主要介绍了python3实现mysql导出excel的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
recommend-type

Springboot上传excel并将表格数据导入或更新mySql数据库的过程

主要介绍了Springboot上传excel并将表格数据导入或更新mySql数据库的过程 ,本文以Controller开始,从导入过程开始讲述,其中包括字典表的转换,需要的朋友可以参考下
recommend-type

在django项目中导出数据到excel文件并实现下载的功能

# 导出Excel文件 def export_excel(request): city = request.POST.get('city') print(city) list_obj=place.objects.filter(city=city) # 设置HTTPResponse的类型 response = HttpResponse(content_type='...
recommend-type

HeidiSQL工具导出导入MySQL数据

在这里,就给大家简单的介绍一款能方便导出或者导入MySQL的数据. ①首先,选择你要导出的数据库,点击鼠标右键:如下图所示 ②这里是进行对你要导出的某个数据库的内容进行选择导出 ③对于操作过程中操作中各个选项的...
recommend-type

使用phpexcel类实现excel导入mysql数据库功能(实例代码)

下面小编就为大家带来一篇使用phpexcel类实现excel导入mysql数据库功能(实例代码)。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章

![:YOLOv1目标检测算法:实时目标检测的先驱,开启计算机视觉新篇章](https://img-blog.csdnimg.cn/img_convert/69b98e1a619b1bb3c59cf98f4e397cd2.png) # 1. 目标检测算法概述 目标检测算法是一种计算机视觉技术,用于识别和定位图像或视频中的对象。它在各种应用中至关重要,例如自动驾驶、视频监控和医疗诊断。 目标检测算法通常分为两类:两阶段算法和单阶段算法。两阶段算法,如 R-CNN 和 Fast R-CNN,首先生成候选区域,然后对每个区域进行分类和边界框回归。单阶段算法,如 YOLO 和 SSD,一次性执行检
recommend-type

info-center source defatult

这是一个 Cisco IOS 命令,用于配置 Info Center 默认源。Info Center 是 Cisco 设备的日志记录和报告工具,可以用于收集和查看设备的事件、警报和错误信息。该命令用于配置 Info Center 默认源,即设备的默认日志记录和报告服务器。在命令行界面中输入该命令后,可以使用其他命令来配置默认源的 IP 地址、端口号和协议等参数。
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。