我想将单元格的颜色更改为用“java.awt.color[r=255,g=255,b=255]定义的颜色
我用了密码:

Color sColor = new Color(200, 0, 0);
XSSFColor userColor = new XSSFColor(sColor);
try
{
    CellStyle style = wb.createCellStyle();
    Font font = wb.createFont();
    font.setColor(userColor.getIndexed());
    style.setFont(font);
    cell.setCellStyle(style);
}
catch (NumberFormatException | NullPointerException ex)
{
    //Handle NumberFormat and NullPointer exceptions here
}

颜色总是黑色的。
System.out.print(userColor);的输出是:>(org.apache.poi.xssf.usermodel.xssfcolor@2e1b928)。
实际上,它的变化取决于我输入的值new Color (200,0,0);
但是System.out.print(userColor.getIndexed());的输出总是:(0)。
有什么建议吗?

最佳答案

如果将字体实例化为xssfFont,则可以使用方法

XSSFFont.setColor(XSSFColor) // Takes a color object, not a short!

请参阅此处的文档:https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html#setColor-org.apache.poi.xssf.usermodel.XSSFColor-
所以试试这个(在快速测试中对我有效):
Color sColor = new Color(200, 0, 0);
XSSFColor userColor = new XSSFColor(sColor);

CellStyle style = wb.createCellStyle();
XSSFFont font = wb.createFont();
font.setColor(userColor);
style.setFont(font);
cell.setCellStyle(style);

09-10 07:40