4

我正在使用 apache poi 3.8 并尝试使用下面的代码为 HSSF 表运行单元格注释示例,但它错过了注释中的作者

Workbook wb = new HSSFWorkbook(); //or new HSSFWorkbook();

    CreationHelper factory = wb.getCreationHelper();

    Sheet sheet = wb.createSheet();

    Row row  = sheet.createRow(3);
    Cell cell = row.createCell(5);
    cell.setCellValue("asdads");

    Drawing drawing = sheet.createDrawingPatriarch();

    ClientAnchor anchor = factory.createClientAnchor();
    anchor.setCol1(cell.getColumnIndex());
    anchor.setCol2(cell.getColumnIndex()+5);
    anchor.setRow1(row.getRowNum());
    anchor.setRow2(row.getRowNum()+2);

    // Create the comment and set the text+author
    Comment comment = drawing.createCellComment(anchor);
    RichTextString str = factory.createRichTextString("Hello, World! the new world");
    comment.setAuthor("roy");
    comment.setString(str);
    comment.setVisible(Boolean.FALSE);
    // Assign the comment to the cell
    cell.setCellComment(comment);

    System.out.println(comment.getAuthor());

    String fname = "C:/Users/roy/Desktop/comment.xls";

    FileOutputStream out = new FileOutputStream(fname);
    wb.write(out);
    out.close();

这是生成的输出和预期的输出 请提出任何想法

4

1 回答 1

2

正如@Avik 上面指出的那样,这可以很容易地设置......我不认为这是一个错误,因为在 Office 中这只是一个便利功能,因为评论不需要以作者姓名开头,你可以去掉它 ...

String author = "roy";
Comment comment = drawing.createCellComment(anchor);
RichTextString str = factory.createRichTextString(author+":\nHello, World! the new world");
str.applyFont(0, author.length()+2, font);
comment.setAuthor(author);
comment.setString(str);
comment.setVisible(Boolean.FALSE);
// Assign the comment to the cell
cell.setCellComment(comment);
于 2013-07-21T10:28:20.007 回答