使用Apache POI将注释从一个Excel工作表复制到另一个工作表

时间:2016-01-28 10:37:12

标签: java apache-poi

我在一张excel表中有一个单元格,其中只包含一条评论。我这样创建了它:

        CreationHelper factory = wb.getCreationHelper();
        Drawing drawing = sheet.createDrawingPatriarch();

        // When the comment box is visible, have it show in a 5x70 space
        ClientAnchor anchor = factory.createClientAnchor();
        anchor.setCol1(cell.getColumnIndex());
        anchor.setCol2(cell.getColumnIndex()+5);
        anchor.setRow1(row.getRowNum());
        anchor.setRow2(row.getRowNum()+70);


        Comment comment = drawing.createCellComment(anchor);
        String text = "";
        RichTextString str = factory.createRichTextString(text);

        comment.setString(str);
        row.createCell(0).setCellComment(comment);

现在我有一个新项目,我只想将该评论复制到另一个工作表的单元格,这应该只适用于:

            XSSFRow row_master_a = null;
            XSSFRow row_slave_a = null;


            for(int j = 4;j<anz_neu+4;j++){
            row_master_a = sheet_master.getRow(4+anz_neu+3-j);
            if(row_master_a == null){
                row_master_a = sheet_master.createRow(4+anz_neu+3-j);
            }

            row_master_a.setHeightInPoints(40); 

            row_slave_a = sheet_slave.getRow(j);    

            row_master_a.createCell(0).setCellComment(row_slave_a.getCell(0).getCellComment());`

我没有收到任何错误,但我在新表中也没有评论。 有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:1)

您必须创建一个单独的注释对象,并且只复制字符串内容,因为Comment-object与Sheet相关联。

即。

之类的东西
  Drawing drawing_master = sheet_master.createDrawingPatriarch();
  Comment comment_master = drawing_master.createCellComment(anchor);
  comment_master.setString(row_slave_a.getCell(0).getCellComment().getString());
  row_master_a.createCell(0).setCellComment(comment_master);