Java ApachePOI注释Excel

Java ApachePOI注释Excel,java,apache,excel,apache-poi,Java,Apache,Excel,Apache Poi,我需要在Excel中的HSSF单元格中添加注释。第一次一切正常,但如果打开同一个文件并再次运行代码,则会损坏该文件 我还注意到,我只需要在图纸上创建一个图形对象一次: _sheet.createDrawingParhical() 如果上面的行执行多次,注释将不起作用 那么,有没有人尝试过向单元格添加注释、关闭文件、再次打开文件并尝试向不同的单元格添加更多注释 下面的代码可以工作,但如果我再次打开该文件,则不会添加注释,并且该文件会损坏 有没有办法从图纸中获取现有图形对象 任何想法都值得赞赏。谢谢

我需要在Excel中的HSSF单元格中添加注释。第一次一切正常,但如果打开同一个文件并再次运行代码,则会损坏该文件

我还注意到,我只需要在图纸上创建一个图形对象一次:

_sheet.createDrawingParhical()

如果上面的行执行多次,注释将不起作用

那么,有没有人尝试过向单元格添加注释、关闭文件、再次打开文件并尝试向不同的单元格添加更多注释

下面的代码可以工作,但如果我再次打开该文件,则不会添加注释,并且该文件会损坏

有没有办法从图纸中获取现有图形对象

任何想法都值得赞赏。谢谢

_drawing = (HSSFPatriarch) _sheet.createDrawingPatriarch();

Row row = _sheet.getRow(rowIndex_);
Cell cell = row.getCell(0);
CreationHelper factory = _workbook.getCreationHelper();

HSSFAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short)6, 5);
        org.apache.poi.ss.usermodel.Comment comment = _drawing.createComment(anchor);
RichTextString str = factory.createRichTextString("Hello, World "+rowIndex_);
comment.setString(str);

  cell.setCellComment(comment);

免责声明:我对此没有特别的经验

但是,我确实注意到注释会破坏任何以前的图形(包括注释,我猜是注释,因为注释似乎是作为图形的一部分存储的)。您是否尝试过先检查文档是否有绘图父权制,并仅在没有的情况下创建它,例如

HSSFPatriarch drawing = document.getDrawingPatriarch()
if (drawing == null)
    drawing = document.createDrawingPatriarch()

考虑到目前的情况,这似乎仍然有点脆弱,但我怀疑它可能适用于您的用例。

它完全按照警告所说的做。存储的图像在第二次保存文件时损坏。只创建新的图像。谢谢你的回复。此代码示例填写了所有用于处理注释的空格;站点文档中的示例不起作用。谢谢