Apache POIの次のコードで前景色を変更できます。次に、単一のセルのフォントの色を変更します。
CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
cell = rowxl.createCell((short) 7);
cell.setCellValue(" <<<<ONTRACK>>>>");
cell.setCellStyle(style);
rowxl.createCell(0).setCellValue(TEAM);
これを試してみましたが、最初の2列の色は変わりません
コード:
public class fclr {
public static void main(String[] args) throws Exception {
InputStream inp = new FileInputStream("c:/workbook1.xls");
Workbook wb = WorkbookFactory.create(inp);
CreationHelper createHelper = wb.getCreationHelper();
Sheet sheet = wb.getSheetAt(0);
Row rowxl = sheet.createRow((short)0);
Cell cell = rowxl.createCell(0);
//apply some colors from the standard palette,
// as in the previous examples.
//we'll use red text on a Lime background
CellStyle style = wb.createCellStyle();
rowxl.createCell(1).setCellValue("ABC");
rowxl.createCell(2).setCellValue("aaa");
Font font = wb.createFont();
font.setColor(HSSFColor.BLACK.index);
style.setFont(font);
cell.setCellStyle(style);
FileOutputStream fileOut = new FileOutputStream("c:/workbook1.xls");
wb.write(fileOut);
fileOut.close();
}
}
現在、いくつかのセルを2回作成しています。これがすべてがうまくいかない理由です。
まず、セルスタイルの作成をコードの上部近くに移動することをお勧めします。覚えておいてください-セルスタイルはワークブックを対象としているため、セルごとにセルスタイルを作成しないでください!
CellStyle style = wb.createCellStyle();
Font font = wb.createFont();
font.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex());
style.setFont(font);
// Set more colours on the style as needed
// Set formatting rules on the style as needed
次に、好みに応じて、次のようにセルを作成します。
Cell cell;
cell = rowxl.createCell(0);
cell.setCellValue("ABC");
cell.setCellStyle(style);
cell = rowxl.createCell(1);
cell.setCellValue("aaa");
cell.setCellStyle(style);
またはこのように:
rowxl.createCell(1).setCellValue("ABC");
rowxl.createCell(2).setCellValue("aaa");
rowx1.getCell(1).setCellStyle(style);
rowx1.getCell(2).setCellStyle(style);
セルを2回作成してスタイリングを忘れてしまうので、現時点で持っている奇妙なハイブリッドをしないでください!