Apache POI背景颜色样式似乎不起作用 - java

晚上好!
我在apache poi v.14版本中遇到了一些麻烦,当我使用Libreoffice或Excel打开渲染的xlsx时,样式未正确应用。

我有以下代码:

class... {

private XSSFCellStyle doubleLockStyle;
/**
     * Create default cell style.
     *
     * @param myWorkBook
     * @return The cell style.
     */
    private XSSFCellStyle createCell(XSSFWorkbook myWorkBook, boolean locked) {
        XSSFCellStyle cs = myWorkBook.createCellStyle();
        cs.setAlignment(HorizontalAlignment.CENTER);
        if (locked) {
            cs.setFillBackgroundColor(LOCKED_COLOR); //rgb from awt colors
            cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            cs.setLocked(true);
        } else {
            cs.setLocked(false);
        }
        return cs;
    }

     /**
     * Prepare cell styles.
     *
     * @param myWorkBook
     */
    private void initStyles(XSSFWorkbook myWorkBook) {
     ...
        short df = myWorkBook.createDataFormat().getFormat("0.00");
        doubleLockStyle = createCell(myWorkBook, true);
        doubleLockStyle.setDataFormat(df);
     ...
    }
    private void writeSheet(XSSFWorkbook myWorkBook, CalendarValueType type, Date startDate, Date endDate) {
     ...
     cell.setCellStyle(doubleLockStyle);
     ... 
    }
}

图纸设置为锁定。
输出不显示背景色,也​​不锁定单元格。
我不知道是什么问题。我还尝试查看它是否是已知的错误,但事实并非如此。
有人遇到过同样的问题吗?
如果我将背景填充图案更改为斜线,则单元格会锁定,但是背景在Excel和Libre Office之间无法正确显示。
谢谢!

参考方案

背景颜色的问题是颜色有点不直观。单元格具有三种颜色,一种用于字体,两种用于填充。填充是大多数人所说的单元格背景。它被实现为填充图案,并具有前景色和背景色。使用实心填充时:

cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);

唯一使用的颜色是填充前景颜色,您可以使用以下颜色进行设置:

cs.setFillForegroundColor(LOCKED_COLOR);

您使用的填充背景色在使用纯色填充图案时不可见。

要使锁定的单元格正常工作,您必须通过以下方式启用工作表保护:

Sheet.protectSheet(password)

您必须设置密码,如果密码为null,则保护功能已禁用。您可以使用以下方法删除密码:

Sheet.setSheetPassword(null, null);

找不到火花RDD类 - java

我是Spark的新手,并且需要有关错误的帮助:java.lang.NoClassDefFoundError: org/apache/spark/rdd/RDD$我正在Scala中创建一个独立的Spark示例。我运行了sbt clean package和sbt assembly来打包scala spark代码。两者均成功完成,没有任何错误。 RDD上的任何操作…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:从类中查找项目名称 - java

仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…