Free Support Forum - aspose.com

Aspose.Word for Android via Java怎么替换word里面的文本

开发平台:android studio,现在已经按照相关资料添加了代码,申请并添加了临时的total license,运行代码后,没有报错,但是所生成的word文档的内容并未替换,应该怎么实现呢?代码以及项目结构见附件截图.jpeg (67.2 KB)
截图

@yichunxia,

谢谢你的询问。 请压缩并上传您的示例输入Word文档和Aspose.Words生成的DOCX文件,在此处显示不需要的行为以进行测试。 然后,我们将在最后调查此问题,并为您提供更多信息。

文件.zip (15.0 KB)

附件已上传,代码就是之前上传的截图里面,out.docx是程序生成的,麻烦看下是什么原因导致替换不了?

@yichunxia,

出现此问题的原因是您的’templete.docx’Word文档不包含真正的合并字段。 我们已修复此模板并将其附在此处供您参考:

templete-fixed.zip (9.3 KB)

希望这可以帮助。

我还有一个问题,可以支持图片替换吗?试了一下,还是没替换成功,麻烦再指点一下。附件是代文件.zip (15.5 KB)
码和文件

@yichunxia,

我更新了你的模板:
templete-fixed-again.zip (9.5 KB)

请尝试使用以下代码:

Document doc = new Document("D:\\templete-fixed.docx");

doc.getMailMerge().setFieldMergingCallback(new HandleMergeImageField());
doc.getMailMerge().execute(new String[]{"FullName", "Company", "MyImage"},
    new Object[]{"FN", "CMP", ImageIO.read(new File("D:\\temp\\aspose.words.jpg"))});

doc.save("D:\\output.docx");
/////////////////////////////////////////////
static class HandleMergeImageField implements IFieldMergingCallback {
    public void fieldMerging(FieldMergingArgs args) throws Exception {
        // Do nothing.
    }

    /**
     * This is called when mail merge engine encounters Image:XXX merge
     * field in the document. You have a chance to return an Image object,
     * file name or a stream that contains the image.
     */
    public void imageFieldMerging(ImageFieldMergingArgs e) throws Exception {
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write((BufferedImage) e.getFieldValue(), "jpg", os);
        InputStream is = new ByteArrayInputStream(os.toByteArray());
        e.setImageStream(is);
    }
}

根据你们提供的模板和代码测试了,没有问题,但是我加了一个表格,换了下名字,代码没有变动,只是模版里面的文字变动了,就不能替换内容,还有就是附件里面的图片超出了表格的边界,应该怎么解决呢?代码.png (13.3 KB)

@yichunxia,

请在此处压缩并上传您的新输入Word文档以进行测试。 我们将在最后调查此问题,并为您提供更多信息。