当前位置: 首页 > 知识库问答 >
问题:

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

叶鸿振
2023-03-14

我在一张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个答案

荀靖
2023-03-14

您必须创建一个单独的注释对象,并且仅复制字符串内容,因为注释对象与工作表相关联。

即类似的东西

  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);
 类似资料:
  • 您好,我正在尝试将一个表从一个docx文件复制到另一个docx文件,但实际情况是,该表的值在新文档中的表下方和表外部被复制(请参见下面的图片) Talbe在新的docx里 正如您所见,表的值被复制到表的外部。我使用的是Libre Office,ApachePOI版本3.17,我的电脑运行的是Ubuntu 16.04 我用来执行复制的代码如下

  • 我想将工作簿的一页(包括样式)复制到新的工作簿。 我尝试对所有单元格进行迭代 抛出java.lang.IllegalStateException:超出了单元格样式的最大数目。在.xls工作簿中最多可以定义4000个样式 抛出java.lang.IllegalArgumentException:此样式不属于提供的工作簿。是否尝试将样式从一个工作簿分配到另一个工作簿的单元格? 正确的样式复制方法是什么

  • 所以在COL D中,我必须只粘贴COL A和COL C相等的值,如果这些值不相等,则跳过或粘贴COL D中的任何东西 我写过类似这样的代码,但不幸的是它粘贴了一切!!

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 我有一本有工作表的工作簿。为了简单起见,假设我的工作簿有一个工作表。在我的工作表中,它被称为“SHEET1”,在单元格A1到A4中有数据。 我希望我的VBA代码做的是: 将工作簿“A”的第1行(或特别是单元格A1至A4)复制到范围变量“我的范围”中 创建一个新的工作簿,我们将此工作簿称为'B' 为工作簿'B'的默认“sheet1”指定一个新名称为“测试名称” 打开工作簿'B'(尽管我意识到VBA代

  • 问题内容: 我有一个带有源文件路径的字符串和另一个带有destfile路径的字符串,它们都指向Excel工作簿。 我想获取源文件的第一张纸并将其作为新选项卡复制到destfile(与destfile中的位置无关),然后保存它。 在or或or中找不到简单的方法。我想念什么吗? 问题答案: 解决方案1 使用该软件包的仅Python解决方案。仅数据值将被复制。 解决方案2 使用该程序包将复制操作委派给E