我可以在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);
我试过这个,但它没有改变前两列的颜色
代码:
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();
}
}
答案 0 :(得分:55)
您目前正在创建一些细胞两次,这就是为什么它出错了
首先,我建议您将单元格样式创建移到代码顶部。请记住 - 单元格样式的范围限定为工作簿,因此不要为每个单元格创建一个!
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);
就是不要做你现在所拥有的奇怪混合,因为你最终创造了两次细胞并错过了造型!