From e5c29d6ac2b210a9385723598d79a42ae5a9679e Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 23 四月 2025 15:20:13 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/CellWriteHandler.java |  141 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 141 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/CellWriteHandler.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/CellWriteHandler.java
new file mode 100644
index 0000000..f022b96
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/excel/CellWriteHandler.java
@@ -0,0 +1,141 @@
+package com.dy.pipIrrGlobal.excel;
+
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
+import com.alibaba.excel.write.metadata.style.WriteCellStyle;
+import com.alibaba.excel.write.metadata.style.WriteFont;
+import com.alibaba.excel.write.style.AbstractVerticalCellStyleStrategy;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.DefaultIndexedColorMap;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFColor;
+import org.springframework.util.PropertyPlaceholderHelper;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Properties;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2024-10-12 11:40
+ * @LastEditTime 2024-10-12 11:40
+ * @Description 鎬昏处琛ㄦ牸璁剧疆
+ */
+public class CellWriteHandler extends AbstractVerticalCellStyleStrategy {
+    private String title;
+
+    PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${", "}");
+
+    public CellWriteHandler(String title) {
+        this.title = title;
+    }
+
+    // 鍔ㄦ�佸鍏ユ爣棰�
+    @Override
+    public 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("title", title);
+                headNameList.replaceAll(value -> propertyPlaceholderHelper.replacePlaceholders(value, properties));
+            }
+        }
+    }
+
+    // 璁剧疆鏍囬鏍峰紡锛屽寘鍚瓧浣撱�佽儗鏅�
+    @Override
+    protected void setHeadCellStyle(CellWriteHandlerContext context) {
+        // 鑾峰彇鍜屽垱寤篊ellStyle
+        WriteCellData<?> cellData = context.getFirstCellData();
+        CellStyle originCellStyle = cellData.getOriginCellStyle();
+        Cell cell = context.getCell();
+
+        if (Objects.isNull(originCellStyle)) {
+            originCellStyle = context.getWriteWorkbookHolder().getWorkbook().createCellStyle();
+        }
+
+        ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 255, 255), new DefaultIndexedColorMap()));
+
+        // 璁剧疆鎸囧畾鍒楄儗鏅壊
+        //if(cell.getColumnIndex() == 10
+        //) {
+        //    ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(237, 237, 237), new DefaultIndexedColorMap()));
+        //}
+
+        // 璁剧疆鑳屾櫙棰滆壊
+        originCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        // 鐢变簬鍦‵illStyleCellWriteHandler锛屼細鎶奜riginCellStyle鍜學riteCellStyle鍚堝苟锛屼細浠riteCellStyle鏍峰紡涓轰富锛屾墍鏈夊繀椤绘妸WriteCellStyle璁剧疆鐨勮儗鏅壊娓呯┖
+        // 鍏蜂綋鍚堝苟瑙勫垯鐪媁riteWorkbookHolder.createCellStyle鏂规硶
+        WriteCellStyle writeCellStyle = cellData.getWriteCellStyle();
+        writeCellStyle.setFillForegroundColor(null);
+        // 蹇呴』璁剧疆OriginCellStyle
+        cellData.setOriginCellStyle(originCellStyle);
+
+        WriteFont headWriteFont = new WriteFont();
+        if (cell.getRowIndex() == 0) {
+            headWriteFont.setFontHeightInPoints((short)14);
+            headWriteFont.setFontName("Arial");
+            headWriteFont.setBold(true);
+        }else if (cell.getRowIndex() == 1) {
+            headWriteFont.setFontHeightInPoints((short)12);
+            headWriteFont.setFontName("Arial");
+            headWriteFont.setBold(false);
+        }
+
+        cellData.getWriteCellStyle().setWriteFont(headWriteFont);
+    }
+
+    // 璁剧疆鍐呭鍏ず銆佸唴瀹瑰瓧浣撴牱寮忋�佽儗鏅牱寮�
+    @Override
+    protected void setContentCellStyle(CellWriteHandlerContext context) {
+
+        // 鑾峰彇鍜屽垱寤篊ellStyle
+        WriteCellData<?> cellData = context.getFirstCellData();
+        CellStyle originCellStyle = cellData.getOriginCellStyle();
+        Cell cell = context.getCell();
+
+        if (Objects.isNull(originCellStyle)) {
+            originCellStyle = context.getWriteWorkbookHolder().getWorkbook().createCellStyle();
+        }
+        // 璁剧疆鑳屾櫙棰滆壊
+        ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 192, 0), new DefaultIndexedColorMap()));
+        //System.out.println("Go to row: " +  context.getCell().getRowIndex() + ", column: " +  context.getCell().getColumnIndex());
+
+        if (cell.getRowIndex() >= 2){
+            ((XSSFCellStyle) originCellStyle).setFillForegroundColor(new XSSFColor(new java.awt.Color(237, 237, 237), new DefaultIndexedColorMap()));
+
+            //if (cell.getColumnIndex() == 10){
+            //    int actualCellRowNum =  context.getCell().getRowIndex() + 1;
+            //    context.getCell().setCellFormula("I" + actualCellRowNum +"+J" + actualCellRowNum);
+            //}
+        }
+
+        originCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        originCellStyle.setBorderLeft(BorderStyle.THIN);                    //宸﹁竟妗嗙嚎
+        originCellStyle.setBorderTop(BorderStyle.THIN);                     //椤堕儴妗嗙嚎
+        originCellStyle.setBorderRight(BorderStyle.THIN);                   //鍙宠竟妗嗙嚎
+        originCellStyle.setBorderBottom(BorderStyle.THIN);                  //搴曢儴妗嗙嚎
+        // 鐢变簬鍦‵illStyleCellWriteHandler锛屼細鎶奜riginCellStyle鍜學riteCellStyle鍚堝苟锛屼細浠riteCellStyle鏍峰紡涓轰富锛屾墍鏈夊繀椤绘妸WriteCellStyle璁剧疆鐨勮儗鏅壊娓呯┖
+        // 鍏蜂綋鍚堝苟瑙勫垯鐪媁riteWorkbookHolder.createCellStyle鏂规硶
+        WriteCellStyle writeCellStyle = cellData.getWriteCellStyle();
+        writeCellStyle.setFillForegroundColor(null);
+        writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
+        writeCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 蹇呴』璁剧疆OriginCellStyle
+        cellData.setOriginCellStyle(originCellStyle);
+
+        WriteFont headWriteFont = new WriteFont();
+        headWriteFont.setFontHeightInPoints((short)12);
+        headWriteFont.setFontName("瀹嬩綋");
+        headWriteFont.setBold(false);
+        headWriteFont.setColor(IndexedColors.BLACK.getIndex());
+
+        cellData.getWriteCellStyle().setWriteFont(headWriteFont);
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0