我发现以下问题类似但不完全相同:
Setting foreground color for HSSFCellStyle is always coming out black
所以我正在为我的表格的标题创建一个XSSFCellStyle,并为它们提供一个Foreground颜色,其中包含以下内容:
wb = new XSSFWorkbook();
headerStyle = wb.createCellStyle();
XSSFColor headerBackgroundColor = new XSSFColor(new java.awt.Color(187,187,187));
headerStyle.setFillForegroundColor( headerBackgroundColor);
headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
然后我使用setCellStyle将它应用于单元格。
在我尝试在那些/那些单元格周围添加边框之前,一切正常。
我使用了propertyTemplate.drawBorders(range,borderType,color,extent);
CellRangeAddress range = new CellRangeAddress(startRow, endRow, startColumn, endColumn);
BorderStyle borderType = BorderStyle.MEDIUM;
short color = IndexedColors.BLACK.getIndex();
BorderExtent extent = BorderExtent.ALL;
propertyTemplate.drawBorders(range, borderType, color, extent);
当我应用它并生成我的工作表时,使用headerStyle设置样式的单元格是完全黑色的。我可以将文本颜色更改为白色,我可以看到所有数据仍然存在。
当我在headerStyle中注释掉setFillPattern时,我可以正确地看到边框,但是前景颜色是白色的,好像没有设置setFillForegroundColor(即使它是)。
我也尝试过使用setFillBackgroundColor,但我得到的结果相同。
有没有人知道我可能出错的地方或者这是一个已知(或未知?)的错误?
谢谢!
亚历
答案 0 :(得分:0)
我已经将NPOI用于XSSF,这是针对.net的。您将翻译以获得Java的等效代码。
XSSFFont myFont = (XSSFFont)workbook.CreateFont();
myFont.FontHeightInPoints = (short)10;
myFont.FontName = "Arial";
myFont.Color = IndexedColors.Black.Index;
myFont.IsBold = false;
myFont.IsItalic = false;
XSSFCellStyle myCellStyle = (XSSFCellStyle)workbook.CreateCellStyle();
myCellStyle.FillBackgroundColor = IndexedColors.LightYellow.Index;
//myCellStyle.FillPattern = FillPattern.NoFill;
myCellStyle.FillForegroundColor = IndexedColors.LightTurquoise.Index;
myCellStyle.FillPattern = FillPattern.SolidForeground;
myCellStyle.Alignment = HorizontalAlignment.Left;
myCellStyle.VerticalAlignment = VerticalAlignment.Top;
myCellStyle.BorderBottom = BorderStyle.Thin;
myCellStyle.BorderTop = BorderStyle.Thin;
myCellStyle.BorderLeft = BorderStyle.Thin;
myCellStyle.BorderRight = BorderStyle.Thin;
myCellStyle.SetFont(defaultFont);