【EasyExcel】動態替換表頭內容并應用樣式

1.定義實體類

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.ContentStyle;
import com.alibaba.excel.metadata.BorderStyleEnum;
import com.alibaba.excel.metadata.VerticalAlignmentEnum;
import com.alibaba.excel.metadata.BooleanEnum;@Data
@HeadRowHeight(40)
@ContentRowHeight(30)
@ExcelIgnoreUnannotated
@ContentStyle(wrapped = BooleanEnum.TRUE,borderBottom = BorderStyleEnum.THIN,borderLeft = BorderStyleEnum.THIN,borderRight = BorderStyleEnum.THIN,borderTop = BorderStyleEnum.THIN,verticalAlignment = VerticalAlignmentEnum.CENTER,horizontalAlignment = HorizontalAlignmentEnum.CENTER
)
public class Product {@ColumnWidth(28)@ExcelProperty(value = {"${cellValue}經營統計表", "${cellWriterValue}", "產品名稱"}, index = 0)private String productName;@ColumnWidth(28)@ExcelProperty(value = {"${cellValue}經營統計表", "${cellWriterValue}", "產品類別"}, index = 1)private String productCategory;@ColumnWidth(28)@ExcelProperty(value = {"${cellValue}經營統計表", "${cellWriterValue}", "價格"}, index = 2)private Double price;
}
  1. 自定義處理器
package com.example.util;import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.ss.usermodel.Row;
import org.springframework.util.PropertyPlaceholderHelper;import java.util.List;
import java.util.Properties;public class DynamicValueCellWriteHandler implements CellWriteHandler {private String cellValue;private String cellWriterValue;private PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${", "}");public DynamicValueCellWriteHandler(String cellValue, String cellWriterValue) {this.cellValue = cellValue;this.cellWriterValue = cellWriterValue;}@Overridepublic void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,Row row, Head head, Integer integer, Integer integer1, Boolean aBoolean) {if (head != null) {List<String> headNameList = head.getHeadNameList();if (CollectionUtils.isNotEmpty(headNameList)) {Properties properties = new Properties();properties.setProperty("cellValue", cellValue);properties.setProperty("cellWriterValue", cellWriterValue);for (int i = 0; i < headNameList.size(); i++) {headNameList.set(i, propertyPlaceholderHelper.replacePlaceholders(headNameList.get(i), properties));}}}}
}

2.在寫入時使用自定義處理器

 excelWriter.write(excelCategoryDataList, EasyExcel.writerSheet(sheetName).head(Product.class).registerWriteHandler(new DynamicValueCellWriteHandler(cellValue, cellWriterValue)).build());

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44809.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44809.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44809.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java--static詳解

1.static靜態的意義&#xff0c;加在屬性面前就為靜態屬性&#xff1b;加在方法面前就為靜態方法 2.如圖&#xff0c;定義了一個靜態屬性age&#xff0c;一個非靜態屬性score&#xff1b; 輸出語句一共四句&#xff0c;其中第三句報錯&#xff0c;由于靜態和非靜態的區別&…

微氣象儀的工作原理

型號推薦&#xff1a;云境天合TH-WQX5】風力發電傳感器在風力發電系統中起著至關重要的作用&#xff0c;它們能夠實時監測和記錄各種關鍵參數&#xff0c;為風力發電機組的控制提供數據支持&#xff0c;從而確保風力發電系統的安全、高效運行。以下是對風力發電傳感器的詳細解析…

程序員有哪些職位?

互聯網行業中的崗位種類繁多、五花八門&#xff0c;學習一門技術后&#xff0c;重要的是找到合適的職業發展方向&#xff0c;程序員有哪些職業發展方向&#xff1f;一起來看看吧&#xff01; 1.架構師 架構師需要程序員有強大的技術實力和深厚的技術積累。建筑師的成長需要經…

使用Docker制作python項目鏡像

各docker桌面版本集合&#xff1a;如果提示新版本系統不支持&#xff0c;可下載舊版本 我也分享在下面。 鏈接: https://pan.baidu.com/s/1HvaO2wOIE3pNE0bM7Qm3sA?pwdg7ky 提取碼: g7ky –來自百度網盤超級會員v2的分享 來源參考&#xff1a;https://zhuanlan.zhihu.com/p/65…

one-hot編碼案例

import jieba from tensorflow.keras.preprocessing.text import Tokenizer # 安裝了新版本的tensorflow # from keras.preprocessing.text import Tokenizer # 系統里面沒有按照新版本的tensorflow 直接使用keras# pytroch tensorflow1.xxxx (keras) # 導入用于對象保存與加…

uniapp 九宮格抽獎

<template><view class"container"><view class"navleft" click"navback"><image src"/static/cj/left.png" mode""></image></view><view class"navtitle">抽獎</…

SAP S4 銷售組的定義和分配

spro-企業結構-定義-銷售與分銷-維護銷售組 新增一個記錄 spro-企業結構-分配-銷售與分銷-給銷售辦公室分配銷售組

JavaScript-map方法

map可以遍歷數組處理數據&#xff0c;并返回新的數組 語法&#xff1a; ?const arr[元素1&#xff0c;元素2&#xff0c;元素3] const newarrarr.map(function(數組的元素,數組的索引)){return 新元素 } const arr[blue,red,green]const newarrarr.map(function(ele,index){co…

詳細介紹TS中的枚舉

在 TypeScript 中&#xff0c;枚舉&#xff08;Enums&#xff09;是一個用于表示常見常量集合的便利特性。枚舉是一種特殊的類型&#xff0c;它們允許你為一組值定義一個固定的命名空間。枚舉常用于模式匹配的 switch 語句和提供更可讀的類型檢查。 枚舉的基本語法&#xff1a…

應用案例 | 臺積電為保證光罩運輸質量選擇MSR沖擊振動記錄儀!內含臺積電工程師專訪

晶圓運輸需要注意什么&#xff1f; 晶圓運輸是半導體制造過程中極為關鍵和敏感的一環。在晶圓運輸過程中&#xff0c;需要注意以下幾點&#xff1a; 1.靜電防護 晶圓非常容易受到靜電的干擾&#xff0c;因此在運輸過程中需要遵守嚴格的靜電防護措施。使用適當的靜電防護包裝…

Bugly并非無所不能

在 iOS 應用因為內存占用過大而被系統 killed 的情況下&#xff0c;Bugly 以及大多數崩潰報告工具是無法捕獲到這種類型的崩潰信息的。原因在于&#xff0c;當系統由于內存壓力過大而終止應用時&#xff0c;是直接將應用進程殺死&#xff0c;不會觸發常規的崩潰處理流程&#x…

Blender 中導出模型fbx

準備模型&#xff1a;確保你的模型已經完成&#xff0c;并且所有的材質、紋理等都已設置好。 應用所有變換&#xff1a; 選擇模型&#xff0c;按下 CtrlA&#xff0c;選擇 "All Transforms" 以應用所有的變換&#xff08;位置、旋轉和縮放&#xff09;。 導出模型&a…

Java面試八股之Redis有哪些數據類型?底層實現分別是什么

Redis有哪些數據類型&#xff1f;底層實現分別是什么 Redis數據類型概述 Redis作為一款鍵值存儲系統&#xff0c;提供了豐富多樣的數據類型以滿足不同場景的需求。以下是Redis支持的主要數據類型及其基本用途&#xff1a; String&#xff08;字符串&#xff09; 存儲單個鍵…

windows系統上python3安裝open3d第三方庫

打開命令提示符&#xff0c;輸入&#xff0c; pip install open3d -i https://pypi.tuna.tsinghua.edu.cn/simple成功頁面&#xff0c;

CSDN回顧與前行:我的創作紀念日——2048天的技術成長與感悟

CSDN回顧與前行&#xff1a;我的創作紀念日——2048天的技術成長與感悟 &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷路&#x1f496; 前言 時光荏苒&#xff0c;歲月如梭。轉眼間&#xff0c;從我在CSDN上寫下第一篇技術博客《2-6 帶頭結點的鏈式表操作…

MVC 控制器 中Action 不能同名,參數不一樣,路由器尋找不到對應的,要加特性

//1 方法不可能完全相同&#xff0c;參數不同//2 那還需要特性嗎&#xff1f;需要的&#xff0c;因為MVC選擇方法時&#xff0c;不是按參數選擇&#xff1a;http請求發送很多數據&#xff0c;其實沒法識別&#xff0c;//因為mvc找方法是通過反射來的&#xff0c;GetMethods(nam…

【SQL】InnoDB中的行鎖

InnoDB 里的行鎖機制主要通過索引來實現&#xff0c;而不是直接對表中的記錄加鎖。具體來說&#xff0c;InnoDB 使用以下幾種鎖定機制來實現行鎖&#xff1a; 記錄鎖 (Record Lock)&#xff1a;鎖定單個索引記錄。間隙鎖 (Gap Lock)&#xff1a;鎖定索引記錄之間的間隙&#x…

vue 自定義(hook)--(模塊化)

文章目錄 定義示例代碼 定義 什么是hook&#xff1f;—— 本質是一個函數&#xff0c;把setup函數中使用的Composition API進行了封裝&#xff0c;類似于vue2.x中的mixin。 自定義hook的優勢&#xff1a;復用代碼, 讓setup中的邏輯更清楚易懂。 示例代碼 useSum.ts中內容如下…

react學習——26redux實現求和案例(異步action)

1、安裝redux-thunk npm install redux-thunk npm install redux-thunk2、redux/store.js 引入redux-thunk /*該文件專門用于創建一個為Count組件服務的store對象*/ //引入createStore,專門創建redux中最為核心的store對象 import {createStore,applyMiddleware} from redux …

Python:引號應用、字符串應用

# 把前面的引號理解為起始符&#xff0c;后面的理解為終止符 # 單雙引號的靈活運用 想輸出"hello,Q" 用單引號 # 想輸出 This is Qs 用雙引號 # 想輸出既有單引號又有雙引號或者特定格式 用三對單引號### word "hello,Q" word2 "This is Qs" …