問題

我正在嘗試使用setFillBackgroundColor方法設定背景顏色,但似乎有必要使用setFillPattern.但是使用setFillPattern方法,我無法找到普通的FillPatternType.

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

我無法找到普通的fillPatternType,如果我使用NO_FILL,那麼背景顏色就不適用.沒有使用setFillPattern,我無法看到setFillBackgroundColor的效果.

請告訴我如何在沒有任何點、磚、鑽石或DIAG的情況下設定平面背景顏色.

謝謝.

  最佳答案

細胞內部使用圖案填充。填充背景顏色是圖案後面的顏色。填充前景顏色是圖案的顏色。

為了使用純色填充單元格,您需要使用填充前景顏色和固體模式。

Fills 和顏色

 ...
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

  相同標籤的其他問題

javaapache-poi