Java(若依):Map导出

2024-08-30 03:52
文章标签 java 导出 map 若依

本文主要是介绍Java(若依):Map导出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Controller

/*** 导出* @param response* @param lssjcx*/
@PostMapping("/export")
public void export(HttpServletResponse response, User user){List<Map<String, Object>> resMap = userMapper.list(user);ExcelUtilT utilT = new ExcelUtilT();utilT.createExcel(response, resMap,"", "");
}

Utils工具类

public class ExcelUtilT {private static ExcelUtilT instance = new ExcelUtilT();public ExcelUtilT() {}public static ExcelUtilT getInstance() {return instance;}/*** 将 List<Map<String,Object>> 类型的数据导出为 Excel* 默认 Excel 文件的输出路径为 项目根目录下* 文件名为 filename + 时间戳 + .xlsx** @param mapList  数据源(通常为数据库查询数据)* @param filename 文件名前缀, 实际文件名后会加上日期* @param title    表格首行标题*/public void createExcel(HttpServletResponse response, List<Map<String, Object>> mapList, String filename, String title) {// 获取数据源的 key, 用于获取列数及设置标题Map<String, Object> map = mapList.get(0);Set<String> stringSet = map.keySet();List<String> headList = new ArrayList<>(stringSet);Collections.sort(headList);  // 表头排序// 定义一个新的工作簿XSSFWorkbook wb = new XSSFWorkbook();// 创建一个Sheet页XSSFSheet sheet = wb.createSheet();// 设置标题样式XSSFCellStyle headWriteCellStyle = getTitleStyle(wb);// 设置标题setTitle(sheet, headList, headWriteCellStyle);// 设置内容样式XSSFCellStyle contentWriteCellStyle = getContentStyle(wb);// 设置内容setContent(sheet, headList, mapList, contentWriteCellStyle);// 导出export(response, wb, filename);}public void setTitle(XSSFSheet sheet, List<String> headList, XSSFCellStyle headWriteCellStyle) {// 设置标题XSSFRow row = sheet.createRow(0);sheet.autoSizeColumn(0);for (int i = 0; i < headList.size(); i++) {XSSFCell cell = row.createCell(i);cell.setCellValue(headList.get(i));cell.setCellStyle(headWriteCellStyle);}}public XSSFCellStyle getTitleStyle(XSSFWorkbook wb) {// 单元格样式类XSSFCellStyle headWriteCellStyle = wb.createCellStyle();// 设置单元格背景颜色headWriteCellStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 128, 128)));headWriteCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);// 文字水平垂直居中headWriteCellStyle.setAlignment(HorizontalAlignment.CENTER);  // 水平居中headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);  // 垂直居中// 设置字体XSSFFont headWriteFont = wb.createFont();headWriteFont.setFontName("Arial");  // 字体样式headWriteFont.setFontHeightInPoints((short) 10);  // 字体大小headWriteFont.setBold(true);  // 加粗headWriteFont.setColor(IndexedColors.WHITE.getIndex());headWriteCellStyle.setFont(headWriteFont);return headWriteCellStyle;}public void setContent(XSSFSheet sheet, List<String> headList, List<Map<String, Object>> mapList, XSSFCellStyle contentWriteCellStyle) {XSSFRow rows;XSSFCell cells;// 循环拿到的数据给所有行每一列设置对应的值for (int i = 0; i < mapList.size(); i++) {//在这个sheet页里创建一行rows = sheet.createRow(i + 1);sheet.autoSizeColumn(i + 1);//给该行数据赋值for (int j = 0; j < headList.size(); j++) {String value = mapList.get(i).get(headList.get(j)).toString();cells = rows.createCell(j);cells.setCellValue(value);cells.setCellStyle(contentWriteCellStyle);}}}public XSSFCellStyle getContentStyle(XSSFWorkbook wb) {// 单元格样式类XSSFCellStyle contentWriteCellStyle = wb.createCellStyle();// 设置单元格背景颜色contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());contentWriteCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);// 文字水平垂直居中contentWriteCellStyle.setAlignment(HorizontalAlignment.CENTER);  // 水平居中contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);  // 垂直居中// 设置边框contentWriteCellStyle.setBorderTop(BorderStyle.THIN);contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);contentWriteCellStyle.setBorderRight(BorderStyle.THIN);// 设置字体XSSFFont headWriteFont = wb.createFont();headWriteFont.setFontName("Arial");  // 字体样式headWriteFont.setFontHeightInPoints((short) 10);  // 字体大小contentWriteCellStyle.setFont(headWriteFont);return contentWriteCellStyle;}public void export(HttpServletResponse response, XSSFWorkbook wb, String filename) {response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");try {wb.write(response.getOutputStream());} catch (Exception e) {System.out.printf("导出Excel异常{}", e.getMessage());} finally {IOUtils.closeQuietly(wb);}}
}

前端调用

handleExport(){this.download('/xxx/export', {...this.queryParams}, `user_${new Date().getTime()}.xlsx`)
},

这篇关于Java(若依):Map导出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119718

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、