填充的模板
在这里插入图片描述
最后导出效果
在这里插入图片描述

实体

/*** 账户实体类* @author test* @date 2025-07-28*/
@Getter
@Setter
class Test {/*** 账户类型*/private String accType;/*** 账户余额*/private String money;
}

导出逻辑

/*** 导出文件逻辑*/
public void exportReport(List<Test> data) {    try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {final ExcelWriter excelWriter = EasyExcel.write(byteArrayOutputStream).withTemplate(ResourceUtil.getStream("/test/report.xlsx")).registerWriteHandler(buildCellWrite(data.size())).build();WriteSheet writeSheet = EasyExcel.writerSheet(0).build();// 将内容竖向填充FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).forceNewRow(false).build();excelWriter.fill(data, fillConfig, writeSheet);excelWriter.finish();// ... 根据流导出文件} catch (IOException e) {log.error("导出结存报表异常", e);}
}         /*** 处理单元格样式** @return CellWriteHandler* @author test* @date 2025-7-27 14:48:35*/private CellWriteHandler buildCellWrite(Integer column) {return new CellWriteHandler() {@Overridepublic void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row,Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {}@Overridepublic void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell,Head head, Integer relativeRowIndex, Boolean isHead) {}@Overridepublic void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,List<CellData> cellDataList, Cell cell,Head head, Integer relativeRowIndex, Boolean isHead) {//当前行int curRowIndex = cell.getRowIndex();//当前列int curColIndex = cell.getColumnIndex();Workbook workbook = writeSheetHolder.getParentWriteWorkbookHolder().getWorkbook();// 合并第一行的内容if (curRowIndex == 0 && curColIndex == 0) {Sheet sheet;// 这里需要将格式SXSSWorkbook转为XSSFWorkbook否则获取到的row会为空if (workbook instanceof SXSSFWorkbook) {SXSSFWorkbook sxssfWorkbook = (SXSSFWorkbook) workbook;sheet = sxssfWorkbook.getXSSFWorkbook().getSheetAt(0);} else {sheet = workbook.getSheetAt(0);}writeSheetHolder.setSheetNo(0);CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 0, column);sheet.addMergedRegion(cellRangeAddress);final Row row = sheet.getRow(0);// 合并后手动设置一下几个格子的边框for (int i = 0; i <= column; i++) {Cell cellInfo = row.getCell(i);if (cellInfo == null) {cellInfo = row.createCell(i);}updateCellStyle(workbook, cellInfo, true);}} else {updateCellStyle(workbook, cell, false);}}};}/*** 设置某个格子的样式** @param workbook 工作簿* @param cell     格子*/private static void updateCellStyle(Workbook workbook, Cell cell, Boolean isHead) {CellStyle newCellStyle = workbook.createCellStyle();CellStyle cellStyle = cell.getCellStyle();BeanUtil.copyProperties(cellStyle, newCellStyle);Font font = workbook.createFont();if (isHead) {// 添加默认样式font.setColor(IndexedColors.BLACK.getIndex());newCellStyle.setWrapText(true);font.setBold(Boolean.TRUE);newCellStyle.setFont(font);}String fontName = "宋体";font.setFontName(fontName);newCellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());newCellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());newCellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());newCellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());newCellStyle.setBorderBottom(BorderStyle.THIN);newCellStyle.setBorderTop(BorderStyle.THIN);newCellStyle.setBorderLeft(BorderStyle.THIN);newCellStyle.setBorderRight(BorderStyle.THIN);// 单元格垂直对齐newCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);newCellStyle.setAlignment(HorizontalAlignment.LEFT);cell.setCellStyle(newCellStyle);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91090.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91090.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91090.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins + SonarQube 从原理到实战一:基于 K8s 部署与使用(含中文插件与 Python 扫描)

前言 公司开发部门希望在 Jenkins 构建过程中自动集成 C/C 的代码扫描&#xff0c;正好我也没接触过 SonarQube&#xff0c;于是记录下从零开始部署 SonarQube 服务并集成到 CI/CD 的过程&#xff0c;供后来者参考。 一、SonarQube 原理与工作机制详解 1.1 什么是 SonarQube&…

Linux(Centos 7.6)命令详解:sz

1.命令作用使用ZMODEM/YMODEM/XMODEM协议发送文件(Send file(s) with ZMODEM/YMODEM/XMODEM protocol)注意: 需要yum install lrzsz (yum provides sz可以查看rz命令是什么rpm包提供的)2.命令语法Usage: sz [options] file ...or: sz [options] -{c|i} COMMAND3.参数详解OPTION…

智能运维中的数据转换

《智能运维实践 苏娜 孙琳 王鸽著 人工智能技术丛书 自然语言处理的常用算法 日志异常检测 根因定位 网络流量异常检测 清华大学出版社》【摘要 书评 试读】- 京东图书 数据转换是数据预处理中的关键步骤&#xff0c;用于将数据从原始格式转换为适合分析和建模的形式。这一过程…

IAR编辑器如何让左侧的工具栏显示出来?

在IAR编辑器中恢复左侧工具栏显示&#xff0c;可通过以下方法操作&#xff1a; 一、通过菜单栏启用工具栏 ‌进入视图菜单‌ 点击顶部菜单栏的 ‌"View"‌ → 在弹出列表中勾选 ‌"Workspace"‌ 若工具栏仍不显示&#xff0c;查看菜单栏右侧是否有 ‌"…

ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)

要实现电脑通过键盘控制安卓平板屏幕点击的功能&#xff0c;可以采用以下方案&#xff1a; 方案一&#xff1a;ADBPython控制&#xff08;有线/无线&#xff09; 准备工具&#xff1a; 安卓平板开启开发者模式&#xff08;设置→关于平板→连续点击版本号&#xff09;启用USB调…

同态滤波算法详解:基于频域变换的光照不均匀校正

&#x1f3ad; 同态滤波&#xff1a;图像频域的调音师技术“如同调音师在音频处理中分离并调节不同频率成分&#xff0c;同态滤波能够在图像频域中精确分离光照与细节信息。”&#x1f3af; 图像频域调音的技术挑战 在数字图像处理中&#xff0c;光照不均匀问题如同音频中的混响…

Ubuntu简述及部署系统

1.什么是Ubuntu1.1概述Ubuntu属于Debian系列&#xff0c;Debian是社区类Linux的典范&#xff0c;是迄今为止最遵循GNU规范的Linux系统。Debain最早由lan Murdock于1993年创建&#xff0c;分为三个版本分支&#xff08;branch&#xff09;&#xff1a;stable&#xff0c;testing…

Claude Code安装部署

1️⃣安装 Node.js&#xff08;已安装可跳过&#xff09; 确保 Node.js 版本 ≥ 18.0 # Ubuntu / Debian 用户 curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo bash - sudo apt-get install -y nodejs node --version# macOS 用户 sudo xcode-select --install /b…

MATLAB近红外光谱分析技术及实践技术应用

专题一、MATLAB编程基础与进阶&#xff08;一&#xff09;1、MATLAB 安装、版本历史与编程环境2、MATLAB 基础操作&#xff08;矩阵操作、逻辑与流程控制、函数与脚本文件&#xff09;3、MATLAB文件读写&#xff08;mat、txt、xls、csv、jpg、wav、avi等格式&#xff09;专题二…

SQLFluff

一、SQLFluff 是什么&#xff1f; SQLFluff 是一个​​开源的 SQL 代码质量工具​​&#xff0c;专注于通过自动化方式提升 SQL 代码的可读性、一致性和规范性。其核心功能包括&#xff1a; ​​代码格式化​​&#xff1a;自动调整缩进、空格、换行等格式问题&#xff0c;支…

盲盒抽卡机小程序系统开发:连接线上线下娱乐新桥梁

在互联网技术的推动下&#xff0c;线上线下融合已经成为娱乐行业发展的必然趋势。盲盒抽卡机&#xff0c;这一原本在线下备受欢迎的娱乐项目&#xff0c;通过小程序系统的开发&#xff0c;成功实现了线上线下的无缝对接&#xff0c;成为连接线上线下娱乐的新桥梁。盲盒抽卡机小…

【SSL证书校验问题】通过 monkey-patch 关掉 SSL 证书校验

标签&#xff1a;Python、SSL、monkey-patch、httpx、aiohttp、requests、OpenAI 1 为什么会有这篇文章&#xff1f; 在本地调试 OpenAI 代理、数据抓取、私有服务、访问外网 时&#xff0c;经常会碰到如下报错&#xff1a; SSLCertVerificationError: [SSL: CERTIFICATE_VER…

VMWARE -ESXI-ntp时间同步无法启动异常处理

从服务界面查看NTP服务是停止的&#xff08;手动启动无效&#xff09;尝试到系统-时间设置-添加服务-网络时间协议&#xff0c;添加阿里云NTP服务器&#xff08;网络可达&#xff09; ntp.aliyun.com 点击确定报错-无法更改主机配置出现上面的情况多半是DNS没有设置ssh登录到服…

yolo11分类一键训练工具免安装环境windows版使用教程

这个是windows上用于yolo11分类训练工具&#xff0c;不需要写代码只需要按照要求摆放好分类图片文件夹就可以训练。软件内置cuda和python模块&#xff0c;因此不需要安装python环境和cuda就可以使用。注意需要电脑配备有nvidia显卡才能使用。要求显存>4GB。首先我们打开软件…

2025年-ClickHouse 高性能实时分析数据库(大纲版)

告别等待&#xff0c;秒级响应&#xff01;这不只是教程&#xff0c;这是你驾驭PB级数据的超能力&#xff01;我的ClickHouse视频课&#xff0c;凝练十年实战精华&#xff0c;从入门到精通&#xff0c;从单机到集群。点开它&#xff0c;让数据处理速度快到飞起&#xff0c;让你…

深入理解 Scikit-learn:机器学习实战的科学之道与避坑指南

掌握工具易&#xff0c;领悟其道难——本文带你穿透API表面&#xff0c;直击工业级机器学习实践的核心逻辑。作为一名长期耕耘在机器学习研究与工业应用一线的从业者&#xff0c;我见过太多因误用 sklearn 而导致的模型失效案例。从数据泄露到评估失真&#xff0c;从特征处理失…

Android 调试桥 (adb) 基础知识点

Android 调试桥 (adb) 是一种功能多样的命令行工具&#xff0c;可让您与安卓手机进行通信。常用于辅助测试开发或定位问题。 一、adb的工作原理 &#x1f31f; 启动服务器进程&#xff1a;检查是否adb服务器进程正在运行&#xff0c;若没有则启动。 启动或关闭adb服务&#xff…

AW2013 LED驱动芯片 工作方式介绍

根据您上传的 AW2013 芯片手册&#xff0c;我将为您分三个部分详细解读&#xff1a;一、芯片简介&#xff08;AW2013 概述&#xff09; AW2013 是一款 3 通道的 IC 控制恒流 LED 驱动芯片&#xff0c;支持以下功能&#xff1a;单通道最大恒流输出&#xff1a;15mA&#xff0c;支…

node.js中的fs与path模块

前言 什么是Node.js&#xff1f; Node.js 是一个开源和跨平台的 JavaScript 运行时环境 Node.js 在浏览器之外运行 V8 JavaScript 引擎&#xff0c;即 Google Chrome 的核心。一、fs模块基础 1. 引入fs模块 const fs require(fs);2. 同步与异步方法 fs模块提供了同步和异步两种…

C# 静态类_静态方法_静态字段(static 声明静态的关键字 )

静态类里面的所有成员都必须得是静态的&#xff0c;是不能被实例化的(不能用对象调用)&#xff0c;不能在静态类中声明实例&#xff08;非静态&#xff09;字段 属性 方法 静态方法中也只能访问静态字段&#xff0c; 普通方法中不管数据是不是静态都能使用1、定义一个静态类 //…