繁体   English   中英

Apache POI评论Excel

[英]Apache POI Comment Excel

我需要在Excel中为HSSF Cell添加注释。 第一次一切正常但如果我打开同一个文件再次运行代码就会破坏文件。

我还注意到我只需要在Sheet上创建一个Drawing对象:

_sheet.createDrawingPatriarch();

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

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

以下代码有效,但如果我再次打开文件,则不添加注释,加上文件损坏!

有没有办法从Sheet获取现有的Drawing对象?

任何想法都赞赏。 谢谢!!

_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);

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

但是,我注意到createDrawingPatriarch()的Javadoc指出它会破坏任何以前的图形(包括,我猜评论,因为看起来评论存储为绘图族长的一部分)。 您是否曾尝试首先检查文档是否具有绘图族长,如果没有,则仅创建它,例如,

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

鉴于getDrawingPatriarch()文档中注释 ,这似乎仍然有点脆弱,但我怀疑它可能适用于您的用例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM