【问题标题】:Apache POI background color style seems not workingApache POI 背景颜色样式似乎不起作用
【发布时间】:2017-04-04 16:08:05
【问题描述】:

晚上好! 我在使用 apache poi v. 3.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 之间的背景显示不正确。 谢谢!

【问题讨论】:

    标签: java excel apache-poi xlsx xssf


    【解决方案1】:

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

    cs.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    

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

    cs.setFillForegroundColor(LOCKED_COLOR);
    

    您使用了在使用实心填充图案时不可见的填充背景颜色。

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

    Sheet.protectSheet(password)
    

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

    Sheet.setSheetPassword(null, null);
    

    【讨论】:

    • 我不明白单元格的前景色和背景色之间的区别。您能否进一步详细说明?文档非常不精确...
    • 我的回答你不明白怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多