From 784728f66376e337f8ce6ef3d22cbc98e37b52f4 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期六, 23 四月 2022 20:43:49 +0800
Subject: [PATCH] Excel注解支持color字体颜色
---
src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java | 37 +++++++-----------
src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java | 46 ++++++++++++++--------
2 files changed, 43 insertions(+), 40 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index c2bb182..96dd158 100644
--- a/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -672,21 +672,6 @@
style.setFont(totalFont);
styles.put("total", style);
- style = wb.createCellStyle();
- style.cloneStyleFrom(styles.get("data"));
- style.setAlignment(HorizontalAlignment.LEFT);
- styles.put("data1", style);
-
- style = wb.createCellStyle();
- style.cloneStyleFrom(styles.get("data"));
- style.setAlignment(HorizontalAlignment.CENTER);
- styles.put("data2", style);
-
- style = wb.createCellStyle();
- style.cloneStyleFrom(styles.get("data"));
- style.setAlignment(HorizontalAlignment.RIGHT);
- styles.put("data3", style);
-
return styles;
}
@@ -808,8 +793,7 @@
{
// 鍒涘缓cell
cell = row.createCell(column);
- int align = attr.align().value();
- cell.setCellStyle(styles.get("data" + (align >= 1 && align <= 3 ? align : "")));
+ setDataCell(cell, attr);
// 鐢ㄤ簬璇诲彇瀵硅薄涓殑灞炴��
Object value = getTargetValue(vo, field, attr);
@@ -853,6 +837,34 @@
}
/**
+ * 璁剧疆鍗曞厓鏍兼牱寮�
+ *
+ * @param cell 鍗曞厓鏍�
+ * @param excel 娉ㄨВ淇℃伅
+ */
+ public void setDataCell(Cell cell, Excel excel)
+ {
+ CellStyle style = wb.createCellStyle();
+ style.setAlignment(HorizontalAlignment.CENTER);
+ style.setVerticalAlignment(VerticalAlignment.CENTER);
+ style.setBorderRight(BorderStyle.THIN);
+ style.setRightBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
+ style.setBorderLeft(BorderStyle.THIN);
+ style.setLeftBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
+ style.setBorderTop(BorderStyle.THIN);
+ style.setTopBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
+ style.setBorderBottom(BorderStyle.THIN);
+ style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
+ style.setAlignment(excel.align());
+ Font dataFont = wb.createFont();
+ dataFont.setFontName("Arial");
+ dataFont.setFontHeightInPoints((short) 10);
+ dataFont.setColor(excel.color().index);
+ style.setFont(dataFont);
+ cell.setCellStyle(style);
+ }
+
+ /**
* 璁剧疆 POI XSSFSheet 鍗曞厓鏍兼彁绀烘垨閫夋嫨妗�
*
* @param sheet 琛ㄥ崟
diff --git a/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java b/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java
index 55c05f0..a0ac8a2 100644
--- a/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java
+++ b/src/main/java/com/ruoyi/framework/aspectj/lang/annotation/Excel.java
@@ -5,6 +5,8 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.math.BigDecimal;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.IndexedColors;
import com.ruoyi.common.utils.poi.ExcelHandlerAdapter;
/**
@@ -57,11 +59,6 @@
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
/**
- * 瀵煎嚭绫诲瀷锛�0鏁板瓧 1瀛楃涓诧級
- */
- public ColumnType cellType() default ColumnType.STRING;
-
- /**
* 瀵煎嚭鏃跺湪excel涓瘡涓垪鐨勯珮搴� 鍗曚綅涓哄瓧绗�
*/
public double height() default 14;
@@ -105,11 +102,21 @@
* 鏄惁鑷姩缁熻鏁版嵁,鍦ㄦ渶鍚庤拷鍔犱竴琛岀粺璁℃暟鎹�诲拰
*/
public boolean isStatistics() default false;
+
+ /**
+ * 瀵煎嚭绫诲瀷锛�0鏁板瓧 1瀛楃涓诧級
+ */
+ public ColumnType cellType() default ColumnType.STRING;
/**
- * 瀵煎嚭瀛楁瀵归綈鏂瑰紡锛�0锛氶粯璁わ紱1锛氶潬宸︼紱2锛氬眳涓紱3锛氶潬鍙筹級
+ * 瀵煎嚭瀛椾綋棰滆壊
*/
- public Align align() default Align.AUTO;
+ public IndexedColors color() default IndexedColors.BLACK;
+
+ /**
+ * 瀵煎嚭瀛楁瀵归綈鏂瑰紡
+ */
+ public HorizontalAlignment align() default HorizontalAlignment.CENTER;
/**
* 鑷畾涔夋暟鎹鐞嗗櫒
@@ -120,22 +127,6 @@
* 鑷畾涔夋暟鎹鐞嗗櫒鍙傛暟
*/
public String[] args() default {};
-
- public enum Align
- {
- AUTO(0), LEFT(1), CENTER(2), RIGHT(3);
- private final int value;
-
- Align(int value)
- {
- this.value = value;
- }
-
- public int value()
- {
- return this.value;
- }
- }
/**
* 瀛楁绫诲瀷锛�0锛氬鍑哄鍏ワ紱1锛氫粎瀵煎嚭锛�2锛氫粎瀵煎叆锛�
--
Gitblit v1.9.3