Apache POI:不允许在一个单元格中使用多个单元格注释
Apache POI: Multiple cell comments in one cell are not allowed
我正在尝试向单元格添加评论。该代码适用于 2 行。但是当行号达到第三时,它开始给我错误:-
java.lang.IllegalArgumentException: Multiple cell comments in one cell are not allowed
我在读取单元格值时检测到异常时添加了注释。给出的是我用来添加评论的方法:-
private void cellException(Sheet datatypeSheet, CellStyle cellErrorStyle, Row invCurrentRow,
int invCellNum, String mainMessage)
{
Cell mainCell = invCurrentRow.getCell(invCellNum);
if (ExcelUtility.checkIfCellValueAbsent(mainCell))
mainCell = invCurrentRow.createCell(invCellNum);
mainCell.setCellStyle(cellErrorStyle);
Comment mainComment = mainCell.getCellComment();
if (Util.isNullOrEmpty(mainComment))
mainComment = datatypeSheet.createDrawingPatriarch().createCellComment(
new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
mainComment.setString(new XSSFRichTextString(mainMessage));
mainCell.setCellComment(mainComment);
datatypeSheet.autoSizeColumn(mainCell.getColumnIndex());
}
此代码适用于两行。我不明白第三行出了什么问题。
我正在使用 XSSFWorkbook,以下是我在我的 springboot 项目中添加的依赖项:-
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
我试着搜索答案,我找到了一个我认为有用但没有用的答案:-
Multiple comments apache poi
您正在使用从列索引 3、行索引 3 开始的相同锚点创建所有单元格注释,即 D4
。所以你所有的单元格评论都属于 D4
。然后,如果您尝试使用相同的锚点创建单元格评论,并且 D4
中已经有评论,则会导致错误:
java.lang.IllegalArgumentException: Multiple cell comments in one cell are not allowed, cell: D4
对每个单元格评论使用不同的锚点:
...
if (mainComment == null)
mainComment = datatypeSheet.createDrawingPatriarch().createCellComment(
//new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
new XSSFClientAnchor(0, 0, 0, 0, mainCell.getColumnIndex(), mainCell.getRowIndex(), mainCell.getColumnIndex()+2, mainCell.getRowIndex()+3));
...
我正在尝试向单元格添加评论。该代码适用于 2 行。但是当行号达到第三时,它开始给我错误:-
java.lang.IllegalArgumentException: Multiple cell comments in one cell are not allowed
我在读取单元格值时检测到异常时添加了注释。给出的是我用来添加评论的方法:-
private void cellException(Sheet datatypeSheet, CellStyle cellErrorStyle, Row invCurrentRow,
int invCellNum, String mainMessage)
{
Cell mainCell = invCurrentRow.getCell(invCellNum);
if (ExcelUtility.checkIfCellValueAbsent(mainCell))
mainCell = invCurrentRow.createCell(invCellNum);
mainCell.setCellStyle(cellErrorStyle);
Comment mainComment = mainCell.getCellComment();
if (Util.isNullOrEmpty(mainComment))
mainComment = datatypeSheet.createDrawingPatriarch().createCellComment(
new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
mainComment.setString(new XSSFRichTextString(mainMessage));
mainCell.setCellComment(mainComment);
datatypeSheet.autoSizeColumn(mainCell.getColumnIndex());
}
此代码适用于两行。我不明白第三行出了什么问题。
我正在使用 XSSFWorkbook,以下是我在我的 springboot 项目中添加的依赖项:-
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
我试着搜索答案,我找到了一个我认为有用但没有用的答案:-
Multiple comments apache poi
您正在使用从列索引 3、行索引 3 开始的相同锚点创建所有单元格注释,即 D4
。所以你所有的单元格评论都属于 D4
。然后,如果您尝试使用相同的锚点创建单元格评论,并且 D4
中已经有评论,则会导致错误:
java.lang.IllegalArgumentException: Multiple cell comments in one cell are not allowed, cell: D4
对每个单元格评论使用不同的锚点:
...
if (mainComment == null)
mainComment = datatypeSheet.createDrawingPatriarch().createCellComment(
//new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
new XSSFClientAnchor(0, 0, 0, 0, mainCell.getColumnIndex(), mainCell.getRowIndex(), mainCell.getColumnIndex()+2, mainCell.getRowIndex()+3));
...