zzw 2 дней назад
Родитель
Сommit
8e9edf03da
1 измененных файлов с 105 добавлено и 0 удалено
  1. 105 0
      assistMg/src/main/java/com/hotent/util/ExcelStyleUtil.java

+ 105 - 0
assistMg/src/main/java/com/hotent/util/ExcelStyleUtil.java

@@ -0,0 +1,105 @@
+package com.hotent.util;
+
+import org.apache.poi.ss.usermodel.*;
+
+/**
+ * Excel样式工具类
+ */
+public class ExcelStyleUtil {
+
+    /**
+     * 创建标题样式(大标题,居中,加粗,16号字体)
+     */
+    public static CellStyle createTitleStyle(Workbook workbook) {
+        CellStyle style = workbook.createCellStyle();
+        Font font = workbook.createFont();
+        font.setBold(true);
+        font.setFontHeightInPoints((short) 16);
+        style.setFont(font);
+        style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        return style;
+    }
+
+    /**
+     * 创建表头样式(居中,加粗,带边框,灰色背景)
+     */
+    public static CellStyle createHeaderStyle(Workbook workbook) {
+        CellStyle style = workbook.createCellStyle();
+        Font font = workbook.createFont();
+        font.setBold(true);
+        style.setFont(font);
+        style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        style.setBorderTop(BorderStyle.THIN);
+        style.setBorderBottom(BorderStyle.THIN);
+        style.setBorderLeft(BorderStyle.THIN);
+        style.setBorderRight(BorderStyle.THIN);
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        return style;
+    }
+
+    /**
+     * 创建数据样式(左对齐,带边框)
+     */
+    public static CellStyle createDataStyle(Workbook workbook) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(HorizontalAlignment.LEFT);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        style.setBorderTop(BorderStyle.THIN);
+        style.setBorderBottom(BorderStyle.THIN);
+        style.setBorderLeft(BorderStyle.THIN);
+        style.setBorderRight(BorderStyle.THIN);
+        return style;
+    }
+
+    /**
+     * 创建数据样式(居中对齐,带边框)
+     */
+    public static CellStyle createCenterDataStyle(Workbook workbook) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(HorizontalAlignment.CENTER);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        style.setBorderTop(BorderStyle.THIN);
+        style.setBorderBottom(BorderStyle.THIN);
+        style.setBorderLeft(BorderStyle.THIN);
+        style.setBorderRight(BorderStyle.THIN);
+        return style;
+    }
+
+    /**
+     * 创建数字数据样式(右对齐,带边框)
+     */
+    public static CellStyle createNumberDataStyle(Workbook workbook) {
+        CellStyle style = workbook.createCellStyle();
+        style.setAlignment(HorizontalAlignment.RIGHT);
+        style.setVerticalAlignment(VerticalAlignment.CENTER);
+        style.setBorderTop(BorderStyle.THIN);
+        style.setBorderBottom(BorderStyle.THIN);
+        style.setBorderLeft(BorderStyle.THIN);
+        style.setBorderRight(BorderStyle.THIN);
+        return style;
+    }
+
+    /**
+     * 计算字符串的显示宽度(中文字符按2个字符宽度计算)
+     * @param text 要计算的字符串
+     * @return 字符宽度
+     */
+    public static int calculateCharWidth(String text) {
+        if (text == null || text.isEmpty()) {
+            return 0;
+        }
+        int width = 0;
+        for (char c : text.toCharArray()) {
+            // 中文字符、全角字符按2个字符宽度计算
+            if (c >= '\u4e00' && c <= '\u9fa5' || c >= '\uff00' && c <= '\uffef') {
+                width += 2;
+            } else {
+                width += 1;
+            }
+        }
+        return width;
+    }
+}