Apache-POI:单元格背景色不起作用

我想一般的配置CellStyles为在格式化HSSFCells使用Apache-POI 3.11

这是代码的可运行示例。正确应用了粗体和边框格式。问题在于背景和前景颜色。

我在做什么错的任何线索?

public class TestSO {

private final static short 
        MY_LIGHT_BLUE=100,
        MY_DARK_BLUE=101,
        MY_BLACK=102,
        MY_WHITE=103;

public static void main(String[]args) throws Exception{
    HSSFWorkbook workbook = new HSSFWorkbook();
    setPallete( workbook.getCustomPalette() );

    HSSFFont fontNormal = workbook.createFont();
    fontNormal.setFontHeightInPoints((short)11);
    fontNormal.setFontName("Calibri");
    HSSFFont fontBold = workbook.createFont();
    fontBold.setFontHeightInPoints((short)11);
    fontBold.setFontName("Calibri");
    fontBold.setBold(true);


    HSSFCellStyle titleStyle = workbook.createCellStyle();
    titleStyle.setFillBackgroundColor(MY_DARK_BLUE);
    titleStyle.setFillForegroundColor(MY_WHITE);
    titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    titleStyle.setFont(fontBold);
    setTopBotBorder(titleStyle);

    HSSFCellStyle fpStyle = workbook.createCellStyle();
    fpStyle.setFillBackgroundColor(MY_LIGHT_BLUE);
    fpStyle.setFillForegroundColor(MY_BLACK);
    fpStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    fpStyle.setFont(fontNormal);
    setTopBotBorder(fpStyle);

    HSSFSheet sheet = workbook.createSheet("Leyenda");

    HSSFCell cell;

    cell = sheet.createRow( 1 ).createCell( 1 );
    cell.setCellValue("TitleStyle");
    cell.setCellStyle(titleStyle);

    cell = sheet.createRow( 2 ).createCell( 1 );
    cell.setCellValue("FpStyle");
    cell.setCellStyle(fpStyle);

    sheet.autoSizeColumn(1);

    try (FileOutputStream fos = new FileOutputStream( new File("TestWB.xls") )) {
        workbook.write( fos );
    }
}  

private static void setPallete( HSSFPalette pallete ){
    pallete.setColorAtIndex(MY_LIGHT_BLUE, (byte)189,(byte)215,(byte)238);
    pallete.setColorAtIndex(MY_DARK_BLUE, (byte)32,(byte)55,(byte)100);
    pallete.setColorAtIndex(MY_BLACK, (byte)0,(byte)0,(byte)0);
    pallete.setColorAtIndex(MY_WHITE, (byte)255,(byte)255,(byte)255);
}

private static void setTopBotBorder( CellStyle style ){
    style.setBorderBottom(CellStyle.BORDER_THIN);
    style.setBottomBorderColor(MY_BLACK);
    style.setBorderTop(CellStyle.BORDER_THIN);
    style.setTopBorderColor(MY_BLACK);
}

}

这是Excel文件的输出:

程序输出

提前致谢。

设得兰群岛

我认为您需要更改几件事。首先,您不能只为自定义颜色分配新的索引值。调色板已经装满,因此您需要使用自己的自定义颜色覆盖现有颜色。因此,尝试将两个蓝调的定义更改为:

private final static short MY_LIGHT_BLUE = HSSFColor.CORNFLOWER_BLUE.index,
        MY_DARK_BLUE = HSSFColor.BLUE.index;

其次,我从来不会同时设置前景色和背景色,因为这似乎冲突了。要更改单元格中的颜色,请尝试仅设置前景色,例如:

HSSFCellStyle titleStyle = workbook.createCellStyle();
titleStyle.setFillForegroundColor(MY_DARK_BLUE);
titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
titleStyle.setFont(fontBold);
setTopBotBorder(titleStyle);

如果然后要更改单元格中实际文本的颜色,则可以更改字体的颜色,例如:

fontNormal.setColor(HSSFColor.RED.index);

我已经对此进行了测试,它似乎可以工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java Apache POI空白单元格

来自分类Dev

POI删除单元格的背景色

来自分类Dev

使用Apache POI创建的单元格注释具有透明背景

来自分类常见问题

使用Apache POI在Excel中合并单元格

来自分类Dev

使用Apache POI从Excel读取单元格

来自分类Dev

使用Apache POI获取单元格颜色

来自分类Dev

重复单元格背景色

来自分类Dev

jTable单元格背景色

来自分类Dev

通过Apache POI中的单元格名称设置新的单元格值

来自分类Dev

使用Apache POI在Excel中将公式单元格转换为错误单元格

来自分类Dev

使用Apache POI将单元的背景色从一个XLSX文件错误地复制到另一个

来自分类Dev

Apache POI XWPFRun.setText()不起作用

来自分类Dev

div的背景色不起作用

来自分类Dev

Apache POI xlsx读取,具有#值的单元格-错误意外的单元格类型(5)

来自分类Dev

创建一个新单元格,在Apache POI中复制先前单元格的样式。

来自分类Dev

如何使用合并单元格值大于单元格宽度的 Apache-POI 增加 Excel 行的高度?

来自分类Dev

Apache Rule不起作用

来自分类Dev

WPF根据内容更改单元格背景色

来自分类Dev

设置DataGrid单元格背景色WPF

来自分类Dev

DatGridView标头单元格的背景色

来自分类Dev

更改了datagridview单元格背景色

来自分类Dev

JavaFx动态设置Tableview单元格背景色

来自分类Dev

在DataGridView上更改单元格背景色CellMouseClick

来自分类Dev

Mailchimp编辑表格单元格背景色

来自分类Dev

设置单击的表格单元格的背景色

来自分类Dev

单击更改单元格背景色

来自分类Dev

双击单元格如何更改背景色?

来自分类Dev

DatGridView标题单元格的背景色

来自分类Dev

滚动时的uitableview单元格背景色问题

Related 相关文章

热门标签

归档