создание комментариев к ячейкам с использованием HSSFClientAnchor в apache poi

Может ли кто-нибудь объяснить мне, как правильно использовать привязки при создании комментариев к ячейкам? Мои работали, но электронная таблица изменилась, и у меня возникли проблемы с отображением комментариев к ячейке. Это код, который я использовал, который работал:

 Comment c = drawing.createCellComment (new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short)6, 5));

Это было обнаружено в основном путем экспериментов. Глядя на API, это точно не делает его более ясным.

Основываясь на кратком руководстве, я также безуспешно пробовал следующее:

ClientAnchor anchor = chf.createClientAnchor();
Comment c = drawing.createCellComment(anchor);
c.setString(chf.createRichTextString(message)); 

person Casey    schedule 17.02.2010    source источник


Ответы (2)


Немного поздно, но это, вероятно, сработает (у меня это работает, а пример Apache POI из быстрого старта у меня тоже не сработал):

    public 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(0, 0, 0, 0, (short) 4, 2, (short) 6, 5));
    comment.setString(createHelper.createRichTextString(text));
    cell.setCellComment(comment);
}

Эрик Прагт

person Erik Pragt    schedule 22.04.2010
comment
Это в основном то, что я в итоге сделал. - person Casey; 22.04.2010

Следующий код работает для файлов формата Office 2007 (xlsx). Выяснил это из руководства по POI http://poi.apache.org/spreadsheet/quick-guide.html#CellComments и Как установить комментарии для 3 ячеек с помощью apache poi

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);
}
person lastnitescurry    schedule 04.07.2011