aspose.word 在已有模板表格中动态插入新行

通过已有模板进行进行动态行,aspose版本为21.6

问题,使用insertAfter插入新行后,没有与原表格合并,而是形成了新的表格,这明显不符合要求,最后使用克隆行的方法进行插入,与原表格完美融合

主要代码如下:

 private void replaceExpertInfoNew(List<ErisNewExpertInfo> expertList, Document doc) {
        Bookmark realName = doc.getRange().getBookmarks().get("realName");
        //书签->-单元格->行->表格
        Row row = (Row) realName.getBookmarkStart().getParentNode().getParentNode().getParentNode();
        Table table = (Table) row.getParentNode();

        for (ErisNewExpertInfo expert : expertList) {
            Row nextRow = (Row) row.deepClone(true);
            插入一行
            table.insertAfter(nextRow, row);
            CellCollection cells = nextRow.getCells();
            int index = 0;
            for (Cell cell : cells) {
                cell.removeAllChildren();
                Paragraph paragraph = new Paragraph(doc);
                cell.appendChild(paragraph);
                switch (index) {
                    case 0:
                        paragraph.appendChild(new Run(doc, expert.getRealName()));
                        break;
                    case 1:
                        paragraph.appendChild(new Run(doc, expert.getWorkUnit()));
                        break;
                    case 2:
                        paragraph.appendChild(new Run(doc, expert.getDepartment()));
                        break;
                    case 3:
                        paragraph.appendChild(new Run(doc, expert.getPosition()));
                        break;
                    case 4:
                        paragraph.appendChild(new Run(doc, expert.getPhone()));
                        break;
                    case 5:
                        paragraph.appendChild(new Run(doc, expert.getEmail()));
                        break;
                    case 6:
                        paragraph.appendChild(new Run(doc, ExpertTypeStateEnum.getEnum(expert.getExpertTypeState()).getDescription()));
                        break;
                    default:
                        break;
                }
                index++;
            }
        }

    }

表格模板如图:

说明:模板中动态插入专家信息

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现java导出动态word带有图片的步骤如下: 1. 首先,需要在Java项目引入aspose.word的依赖。 2. 接着,需要准备好自定义的word模板,可以使用Microsoft Word制作。在制作模板时,将需要动态填充的位置标记出来,同时为需要插入图片的位置添加一个图片控件。在这个控件的属性,设置好图片的默认值,以及允许用户插入新的图片。 3. 在Java代码,使用aspose.word提供的API读取自定义的word模板,并且使用aspose.word提供的API将需要填充的数据填入模板。对于需要插入图片的位置,可以使用aspose.word提供的API获取到图片控件,并且替换其的图片。 4. 最后,将填充好数据的word文件输出即可。 以下是示例代码: ```java // 加载自定义的word模板 Document doc = new Document("自定义word模板.docx"); // 获取需要填充的位置 NodeCollection<Node> nodes = doc.getChildNodes(NodeType.RUN, true); // 填充数据,这里使用了HashMap作为数据源,实际开发可以根据实际情况使用其他数据源 HashMap<String, String> data = new HashMap<String, String>(); data.put("name", "张三"); data.put("age", "25"); data.put("address", "北京市朝阳区"); // 插入图片,这里使用了FileInputStream作为图片源,实际开发可以根据实际情况使用其他图片源 for (Shape shape : (Iterable<Shape>) doc.getChildNodes(NodeType.SHAPE, true)) { if (shape.hasImage()) { FileInputStream imageStream = new FileInputStream("图片源.png"); shape.getImageData().setImage(imageStream); } } // 输出填充好数据的word文件 doc.save("填充好数据的word文件.docx"); ``` 以上代码演示了如何使用aspose.word及自定义word模板实现java导出动态word带有图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值