在 POI 中,單元格顏色由 前景色、背景色 與 填充模式 共同決定。若想要實心顏色,必須同時設置前景色並選擇 SOLID_FOREGROUND 模式;單獨設置背景色無效。
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CellStyle;
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFCellStyle style = wb.createCellStyle();
// 關鍵:設置前景色 + 實心填充模式
style.setFillForegroundColor(HSSFColor.TEAL.index); // 前景色
style.setFillPattern(CellStyle.SOLID_FOREGROUND); // 實心模式
// 若需漸變或圖案,可改用其他 FillPattern 並搭配背景色
// style.setFillBackgroundColor(HSSFColor.YELLOW.index);
// style.setFillPattern(CellStyle.FINE_DOTS);
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue("測試顏色");
cell.setCellStyle(style);
| 常量名 | 顏色示例 |
|---|---|
| HSSFColor.RED | 紅 |
| HSSFColor.BLUE | 藍 |
| HSSFColor.GREEN | 綠 |
| HSSFColor.YELLOW | 黃 |
| HSSFColor.BLACK | 黑 |
| HSSFColor.WHITE | 白 |
| HSSFColor.GREY_25_PERCENT | 淺灰 25% |
| HSSFColor.GREY_50_PERCENT | 灰 50% |
| HSSFColor.TEAL | 藍綠 |
| HSSFColor.LIME | 檸檬綠 |
| HSSFColor.AQUA | 水藍 |
| HSSFColor.CORAL | 珊瑚紅 |
| HSSFColor.GOLD | 金色 |
| HSSFColor.PINK | 粉紅 |
| HSSFColor.VIOLET | 紫羅蘭 |
| HSSFColor.SKY_BLUE | 天藍 |
| HSSFColor.LIGHT_YELLOW | 淡黃 |
| HSSFColor.LIGHT_GREEN | 淡綠 |
| HSSFColor.LIGHT_BLUE | 淡藍 |
| HSSFColor.ORANGE | 橙 |
| HSSFColor.ROSE | 玫瑰紅 |
.xls (HSSF);若操作 .xlsx (XSSF),請將類名替換為 XSSFWorkbook 等,顏色常量改用 IndexedColors。setFillForegroundColor(new XSSFColor(new java.awt.Color(r,g,b)))。