easyexcel填充方式導出-合并單元格并設置邊框

填充的模板
在這里插入圖片描述
最后導出效果
在這里插入圖片描述

實體

/*** 賬戶實體類* @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、定義一個靜態類 //…