使用 Apache POI (HSSF/XSSF) 修改 Excel 儲存格樣式(如背景色)卻不生效,通常非 API 錯誤,而是細節疏漏。以下系統性排查清單:
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(path));
HSSFCellStyle style = wb.createCellStyle();
style.setFillForegroundColor(HSSFColor.RED.index); // 注意:前景色
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cell.setCellStyle(style);
setFillBackgroundColor 設定的是「背景色」(pattern 為非實心時才可見),實心填滿必須用 setFillForegroundColor。createCellStyle() 都會產生新樣式,大量儲存格會超出 Excel 樣式上限 (64k)。應共用樣式物件,或用 CellUtil.getCellStyle() 管理。wb.write(new FileOutputStream(path)) 並 close()。cell.setCellType(CellType.STRING)。style 物件屬性是否如預期。Workbook、Sheet、Row, Cell 介面 (SS 模型),支援 .xls/.xlsx 切換。SXSSFWorkbook (串流模式) 避免 OOM。若仍無法解決,請提供完整可重現的最小程式碼、POI 版本、Excel 版本與錯誤堆疊,方便進一步診斷。