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