使用Apache POI创建的单元格注释具有透明背景

时间:2014-08-14 14:59:40

标签: java excel apache-poi

我正在使用Apache POI 3.9来创建单元格注释。

我一直在使用Erik Pragt在creating cell comments using HSSFClientAnchor in apache poi中建议的HSSF表格代码几年,而且效果很好。

但是现在我需要将单元格注释添加到XSSF表。

我在同一页面尝试过lastnitescurry建议的代码,效果很好,但它为我创建了透明背景的评论。

代码转载如下。

protected void setCellComment(Cell cell, String message) {
    Drawing drawing = cell.getSheet().createDrawingPatriarch();
    CreationHelper factory = cell.getSheet().getWorkbook()
            .getCreationHelper();
    // When the comment box is visible, have it show in a 1x3 space
    ClientAnchor anchor = factory.createClientAnchor();
    anchor.setCol1(cell.getColumnIndex());
    anchor.setCol2(cell.getColumnIndex() + 1);
    anchor.setRow1(cell.getRowIndex());
    anchor.setRow2(cell.getRowIndex() + 1);
    anchor.setDx1(100);
    anchor.setDx2(100);
    anchor.setDy1(100);
    anchor.setDy2(100);

    // Create the comment and set the text+author
    Comment comment = drawing.createCellComment(anchor);
    RichTextString str = factory.createRichTextString(message);
    comment.setString(str);
    comment.setAuthor("Apache POI");
    // Assign the comment to the cell
    cell.setCellComment(comment);
}

如何将背景更改为黄色背景?

注意:如果在Excel中编辑apache-poi创建的注释,则它将暂时以黄色背景显示。但是,如果尝试格式化此注释以从Excel中更改背景,则无法进行。 (不显示“颜色和线条”菜单)

2 个答案:

答案 0 :(得分:0)

答案是我的Java正在操作将“显示所有注释”设置为true的Excel .xlsm文件。一旦我更改了此设置,java就会正确创建注释。

答案 1 :(得分:0)

我设法在包含Button Form Control的工作表中重现了所描述的行为。 我删除了按钮,注释显示正确。

作为按钮的替代方法,我使用了本指南从单元格中运行宏 https://www.extendoffice.com/documents/excel/4354-excel-click-on-cell-to-run-macro.html