0

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

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);

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

4

1 回答 1

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();
    }
}
于 2013-10-20T22:48:55.583 回答