Apache poi 3.10。 HSSFFONT setColor不起作用

时间:2013-10-20 21:22:11

标签: java apache-poi

我尝试使用白色字体但是它们总是显示为黑色,这是我的代码:

HSSFCellStyle estiloCabecera = wb.createCellStyle();
estiloCabecera.setFillBackgroundColor(IndexedColors.BLACK.getIndex());
estiloCabecera.setFillPattern(CellStyle.SOLID_FOREGROUND);

HSSFFont fuenteCabecera = wb.createFont();
fuenteCabecera.setFontHeightInPoints((short)12);
fuenteCabecera.setFontName("Arial");
fuenteCabecera.setColor((short)HSSFColor.WHITE.index);
//fuenteCabecera.setColor(HSSFFont.COLOR_RED);
estiloCabecera.setFont(fuenteCabecera);

Row rowCabeceraTabla = sheet.createRow((short)3);
Cell celda = rowCabeceraTabla.createCell(0);
celda.setCellValue(new HSSFRichTextString("Id pregunta"));
celda.setCellStyle(estiloCabecera);

我不明白为什么,我已经尝试了我能想到的一切。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

正如我的评论中所述,您的示例适用于我,即我得到一个带有白色文本的黑色单元格。

矩形代替文本通常指出,你有编码问题或字体不支持字符。您可以尝试使用“Arial Unicode MS”而不是“Arial”吗?

我发布我的代码作为答案仅供进一步参考...如果我们发现了可以解决您问题的新细节,我会更新它...

import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;


public class ForegroundColor {
    public static void main(String[] args) throws Exception {
        Workbook wb = new HSSFWorkbook();
        Sheet sheet = wb.createSheet();

        CellStyle estiloCabecera = wb.createCellStyle();
        estiloCabecera.setFillBackgroundColor(IndexedColors.BLACK.getIndex());
        estiloCabecera.setFillPattern(CellStyle.SOLID_FOREGROUND);

        Font fuenteCabecera = wb.createFont();
        fuenteCabecera.setFontHeightInPoints((short)12);
        fuenteCabecera.setFontName("Arial");
        fuenteCabecera.setColor((short)HSSFColor.WHITE.index);
        //fuenteCabecera.setColor(HSSFFont.COLOR_RED);
        estiloCabecera.setFont(fuenteCabecera);

        Row rowCabeceraTabla = sheet.createRow((short)3);
        Cell celda = rowCabeceraTabla.createCell(0);
        celda.setCellValue(new HSSFRichTextString("Id pregunta"));
        celda.setCellStyle(estiloCabecera);

        FileOutputStream fos = new FileOutputStream("color.xls"); 
        wb.write(fos);
        fos.close();
    }
}