0

我使用以下 java 代码在 Apache POI 中成功生成单元格注释

public static void setComment(String text, Cell cell) {
            final Map<Sheet, HSSFPatriarch> drawingPatriarches = new HashMap<Sheet, HSSFPatriarch>();

            CreationHelper createHelper = cell.getSheet().getWorkbook().getCreationHelper();
            HSSFSheet sheet = (HSSFSheet) cell.getSheet();
            HSSFPatriarch drawingPatriarch = drawingPatriarches.get(sheet);
            if (drawingPatriarch == null) {
                drawingPatriarch = sheet.createDrawingPatriarch();
                drawingPatriarches.put(sheet, drawingPatriarch);
            }

            Comment comment = drawingPatriarch.createComment(new HSSFClientAnchor(100, 100, 100, 100, (short)1, 1, (short) 10, 5));
            comment.setString(createHelper.createRichTextString(text));
            cell.setCellComment(comment);
        }

在 apache poi 中使用 HSSFClientAnchor 从创建单元格注释中复制了它。谢谢埃里克!

如何将评论的大小更改为 300 像素宽和 100 像素高?

谢谢!

4

3 回答 3

4

据我所知,这不是一个简单的方法,因为注释锚点是由单元格(列、行参数)和偏移到单元格(dx、dy 参数)指定的。因此,您需要计算单元格的宽度/高度以计算出第二个单元格坐标,然后计算出该单元格的偏移量,以使其完全符合您想要的像素大小。

于 2012-10-26T21:08:37.223 回答
1

繁忙的 HSSF 和 XSSF 功能开发人员指南

// 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(row.getRowNum());
anchor.setRow2(row.getRowNum()+3);

只需更改 setCol2 和 setRow2 的值。

于 2013-07-18T11:22:09.003 回答
-2

您可以为任何单元格分配列宽,如下所示:

sheet.setColumnWidth(0, 1000);
于 2012-08-10T10:44:07.043 回答