java - 如何使用 apache poi 4.1.0 设置单元格的背景颜色

标签 java apache-poi

我正在尝试使用 setFillBackgroundColor 方法设置背景颜色,但似乎有必要使用 setFillPattern 。但是使用 setFillPattern 方法我无法找到普通的 FillPatternType。

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
cellStyle.setFillPattern(HSSFCellStyle.SPARSE_DOTS);

我无法找到普通的 fillPatternType,如果我使用 NO_FILL 则背景颜色不适用。如果不使用setFillPattern,我无法看到setFillBackgroundColor的效果。

能否请您告诉我如何设置没有任何点、砖 block 、菱形或 DIAG 的纯背景颜色。

谢谢。

最佳答案

单元格内部使用图案填充。填充背景颜色是图案后面的颜色。填充前景色是图案的颜色。

要使用纯色填充单元格,您需要使用填充前景色和纯色图案。

参见Fills and colors

...
cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
...

具有单元格填充和单元格内容的完整示例:

import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CreateExcelCellFillColor {

 public static void main(String[] args) throws Exception {
  Workbook workbook = new XSSFWorkbook();
  //Workbook workbook = new HSSFWorkbook();

  CellStyle cellStyle = workbook.createCellStyle();
  cellStyle.setAlignment(HorizontalAlignment.CENTER);
  cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

  cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
  cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

  Sheet sheet = workbook.createSheet();
  Row row = sheet.createRow(0);
  Cell cell = row.createCell(0);
  cell.setCellValue("cell value");
  cell.setCellStyle(cellStyle);

  row.setHeightInPoints(50);
  sheet.setColumnWidth(0, 50 * 256);

  FileOutputStream out = null;
  if (workbook instanceof HSSFWorkbook) {
   out = new FileOutputStream("CreateExcelCellFillColor.xls");
  } else if (workbook instanceof XSSFWorkbook) {
   out = new FileOutputStream("CreateExcelCellFillColor.xlsx");
  }
  workbook.write(out);
  out.close();
  workbook.close();
 }
}

结果:

enter image description here

关于java - 如何使用 apache poi 4.1.0 设置单元格的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58154558/

相关文章:

java - Groovy/Java - JSON - 通过可变路径更新 JSON

java - 垂直合并单元格并将数据插入单元格

java - 寻找关于如何在我已经有长度的情况下返回最长的非连续子串的提示(不是答案)

java - Apache POI - 处理空字段

java - 无法使用 Apache POI 读取 Excel

java - Apache POI,自动过滤后调用自动调整大小

java - Apache POI 货币数据格式

java - 如何在 Java 中添加非常大的值?

java - 由于JDK功能不受支持,Jenkins Maven编译失败?

java - TestNg 多线程问题。 TestNg 不尊重子线程