添加批注的代码如下:
public static void addHSSFComment(Cell cell,String value){
Comment comment = cell.getSheet().createDrawingPatriarch().createCellComment(new HSSFClientAnchor(0, 0, 0,0, (short) 3, 3, (short) 5, 6));
// 输入批注信息
comment.setString(new HSSFRichTextString(value));
// 添加作者,选中B5单元格,看状态栏
comment.setAuthor("toad");
// 将批注添加到单元格对象中
cell.setCellComment(comment);
}
该代码在3.8版本运行是正常的,但是升级到3.12或者以上版本时,一个创建多个批注时出现报错,报错信息如下
Multiple cell comments in one cell are not allowed
意思大概是多个单元格的批注,位置区域不能一样,于是找到如下解决办法:
public static void addXSSFComment(Cell cell,String value){
Sheet sheet = cell.getSheet();
ClientAnchor anchor = new XSSFClientAnchor();
//关键修改
anchor.setDx1(0);
anchor.setDx2(0);
anchor.setDy1(0);
anchor.setDy2(0);
//根据cell位置设置批注展示区域
anchor.setCol1(cell.getColumnIndex());
anchor.setRow1(cell.getRowIndex());
anchor.setCol2(cell.getColumnIndex()+5);
anchor.setRow2(cell.getRowIndex()+6);
Drawing drawing = sheet.createDrawingPatriarch();
Comment comment = drawing.createCellComment(anchor);
// 输入批注信息
comment.setString(new XSSFRichTextString(value));
// 添加作者
comment.setAuthor("si_er");
// 将批注添加到单元格对象中
cell.setCellComment(comment);
}