java - Apache POI 注释 Excel

标签 java apache excel apache-poi

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

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

_sheet.createDrawingPatriarch();

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

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

下面的代码有效,但如果我再次打开文件,则不会添加注释,而且文件会损坏!!!

有没有办法从工作表中获取现有的绘图对象?

任何想法表示赞赏。谢谢!!

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

最佳答案

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

但是,我确实注意到 the Javadoc for createDrawingPatriarch()注意到它会破坏任何以前的图形(包括,我猜评论,因为看起来评论是作为绘图族长的一部分存储的)。您是否尝试过先检查文档是否有绘图族长,只有在没有时才创建它,例如,

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

考虑到 comments in the documentation for getDrawingPatriarch(),这似乎仍然有些脆弱。 ,但我怀疑它可能适用于您的用例。

关于java - Apache POI 注释 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785719/

相关文章:

excel - 如何通过变量引用Excel工作表

excel - 在 Power 查询中按最接近的日期和 ID 合并两个表

java - 如何反射(reflect)另一个项目的类信息

java - 如果 Arraylist 中存在元素而不引发 ConcurrentModificationException,则从 Arraylist 中移除这些元素

java - 通过telnet和socket发送xml的问题

excel - 循环遍历指定文件夹中的所有 Excel 文件并从特定单元格中提取数据的代码

java - Javascript 和 Java 中的参数

linux - AH02429 : Response header name 'record Created - ' contains invalid characters, 中止请求

apache - 重写规则而不更改浏览器中的 URL

php - move_uploaded_file() 函数不会将上传的文件保存在服务器上