poi版本3.12以上添加多个批注报错的问题

添加批注的代码如下:

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

你可能感兴趣的:(poi,java,java)