gpt4 book ai didi

java - 在 Apache POI 中创建 CellStyle 库

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:06 25 4
gpt4 key购买 nike

我的系统使用来自 Java 的 Apache POI 生成许多不同的 Excel 报告。

很多这些报告共享相同的样式。

我已经创建了一个 CellStyle 库供所有报告使用。我想知道是否有更简洁的方法。

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Workbook;

public class CellStyles {
CellStyle headingCellStyle = null;
Workbook wb;

public CellStyles(Workbook wb) {
this.wb = wb;
}

public CellStyle getHeadingCellStyle() {
if (headingCellStyle == null) {
headingCellStyle = wb.createCellStyle();
headingCellStyle.setFillForegroundColor(HSSFColor.YELLOW.index);
headingCellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);
}
return headingCellStyle;
}

}

然后调用它

Workbook wb = new XSSFWorkbook(inputStream); // XSSF for .xlsm
CellStyles cs = new CellStyles(wb);


CellUtil.getCell(myRow, 2).setCellStyle(cs.getHeadingCellStyle());

最佳答案

我认为考虑到它的简单性,这个解决方案很好。

不幸的是,在 POI 中,CellStyle 需要从 Workbook 创建,因此您无法真正避免以某种方式将 wb 作为参数传递。

除了您的实现之外,您可能会尝试在 CellStyles 中公开一堆 static 方法,将 wb 作为参数并返回样式,这样您就不需要在代码中传递 cs 对象。虽然我不会说这样做是值得的,但您需要维护 Map[Workbook, CellStyles] 映射的静态缓存,这将用于返回样式。

样式的延迟初始化也很有效,可以避免创建重复的样式,但最好将样式保持私有(private),即 private CellStyle headingCellStyle = null; 以确保没有任何内容可以更改样式分配在类之外,不会意外使用空值 headerCellStyle。

关于java - 在 Apache POI 中创建 CellStyle 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23594822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com