CellStyleBuilder

CellStyleBuilder.java

package com.alibaba.easyexcel.test;

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.*;

/**
 * @Author WL
 * @Date 2025/2/19 17:18
 * @Version 1.0
 */
@Slf4j
@Data
public class CellStyleBuilder {
    /**
     * 数值类型,保留整数
     */
    public static final String NUMBER_FORMAT_0 = "0_ ";
    /**
     * 数值类型,保留2位小数
     */
    public static final String NUMBER_FORMAT_2 = "0.00_ ";

    private Workbook workbook;
    private CellStyle cellstyle;

    public CellStyleBuilder(Workbook workbook) {
        this.workbook = workbook;
        this.cellstyle = workbook.createCellStyle();
    }

    public CellStyle build() {
        return cellstyle;
    }
    public CellStyleBuilder setFont(Object... fontArr) {
        Font font = this.workbook.createFont();
        try {
            for (int i = 0; i < fontArr.length; i++) {
                switch (i) {
                    case 0:
                        font.setFontName(String.valueOf(fontArr[i]));
                        continue;
                    case 1:
                        font.setFontHeightInPoints(Short.parseShort(String.valueOf(fontArr[1])));
                        continue;
                    case 2:
                        font.setBold(Boolean.parseBoolean(String.valueOf(fontArr[2])));
                        continue;
                    default:
                        log.warn("字体参数设置失败!");
                        break;
                }
            }
        } catch (Exception e) {
            throw new RuntimeException("excel字体设置失败!");
        }
        cellstyle.setFont(font);
        return this;
    }

    public CellStyleBuilder setWrapText(Boolean flag) {
        cellstyle.setWrapText(flag);
        return this;
    }

    public CellStyleBuilder setAlignment(HorizontalAlignment horizontalAlignment) {
        cellstyle.setAlignment(horizontalAlignment);
        return this;
    }

    public CellStyleBuilder setVerticalAlignment(VerticalAlignment verticalAlignment) {
        cellstyle.setVerticalAlignment(verticalAlignment);
        return this;
    }

    public CellStyleBuilder setDataFormat(String format) {
        DataFormat dataFormat = this.workbook.createDataFormat();
        cellstyle.setDataFormat(dataFormat.getFormat(format));
        return this;
    }
}

Test.java

package com.alibaba.easyexcel.test.util;

import com.alibaba.easyexcel.test.CellStyleBuilder;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * @Author WL
 * @Date 2025/2/19 17:32
 * @Version 1.0
 */
public class Test {
    public static void main(String[] args) {

        Workbook workbook = new XSSFWorkbook(); // 或者使用HSSFWorkbook,取决于你的需求
        Sheet sheet = workbook.createSheet("Example Sheet");
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello World");
        cell.setCellStyle(new CellStyleBuilder(workbook)
                .setFont("宋体", 14, true)
                .setWrapText(true)
                .setAlignment(HorizontalAlignment.CENTER)
                .setVerticalAlignment(VerticalAlignment.CENTER)
                .setDataFormat(CellStyleBuilder.NUMBER_FORMAT_2)
                .build());
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面 万丈高楼平地起,学习Linux需要掌握大量的命令,但是不要因为Linux的命令繁多而生退却之心。学习Li...
    真香IT阅读 460评论 0 5
  • Android中的绝对路径和相对路径 首先路径的概念是相对于文件本身来说的,明白了这一点之后再看下面的: 绝对路径...
    遥遥的远方阅读 3,663评论 1 1
  • Spring框架基础 1 什么是Spring框架? Spring框架是框架的框架,因为其提供了对如Structs,...
    abserver阅读 365评论 0 0
  • 6.IO流 6.1 File 系统中我们一眼看到的就是文件或者文件夹本质是一个路径(字符串);用字符串来表示这个路...
    ADMAS阅读 404评论 0 0
  • 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把...
    04d66c630228阅读 171评论 0 0