从java中的模板文件创建docx文件

Posted

技术标签:

【中文标题】从java中的模板文件创建docx文件【英文标题】:Create docx file from a template file in java 【发布时间】:2017-01-03 07:37:27 【问题描述】:

我需要基于模板创建 docx 文件。 模板应该包含占位符,我应该能够从 java 填充占位符。 是否有可能做到这一点,如果可以的话,请建议我做这件事的好方法。

【问题讨论】:

【参考方案1】:

最初的问题有点晚了,但如果其他人需要从模板动态创建 docx 文档,您可能想看看我在 docx4j 之上创建的 DocxStamper Java 库。

它允许在 docx 模板中使用Spring Expression Language,您可以使用以下几行从模板中创建文档:

MyData data = ...;           // your own POJO containing the data      
InputStream template = ...;  // InputStream to the template file
OutputStream out = ...;      // OutputStream to the resulting document
DocxStamper stamper = new DocxStamperConfiguration()
    .build();
stamper.stamp(template, context, out);
out.close();

【讨论】:

【参考方案2】:

如前所述,有 3 种基本方法:

    最佳:内容控制数据绑定

    cheap/cheerful:变量替换(即文档表面的魔术字符串),但易碎(拆分运行问题)

    LEGACY: MERGEFIELD 带或不带其他域代码。

Docx4j 支持所有三种方法,但我们通常推荐内容控制数据绑定,因为它符合 Microsoft 的方向(最好可以确定),并且功能最强大。

您需要考虑模板作者的技术技能。

【讨论】:

【参考方案3】:

请参阅https://github.com/centic9/poi-mail-merge 了解简单的“变量替换”方法。如果一个替换字符串应用了多种格式,则它不起作用,但对于精心制作模板的简单情况,它确实有效。

基本上,它从 CSV 或 Excel 文件中读取模板和数据,然后将其合并到多个结果文件中,每行数据一个。

它适用于 DOCX XML 内容,因此没有完全使用 Apache POI XWPF 支持,但是这样可以按预期使用模板中的格式和其他内容,而不需要完全支持 Apache POI(具有 DOCX支持仍然作为“便签本”组件的一部分,因为支持尚未完全完成)。

【讨论】:

【参考方案4】:

您可以使用具有以下 LINQ 报告语法的 Word 模板来使用 Aspose.Words for Java 来实现您的要求。

>

标签正文通常由以下元素组成:

标签名称 用括号括起来的表达式 标签可用的一组开关,每个开关前面都有“-”字符

假设您在应用程序中定义了 Sender 类,如下所示:

public class Sender 
    public Sender(String name, String message) 
        _name = name;
        _message = message;
    

    public String getName() 
        return _name;
    

    public String getMessage() 
        return _message;
    

    private String _name;
    private String _message;

要生成包含具体发件人消息的报告,您可以使用具有以下内容的模板文档。

> 说:“>。”

要从模板构建报告,您可以使用以下源代码。

Document doc = new Document(getMyDir() + "temp_HelloWorld.docx");

Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
ReportingEngine engine = new ReportingEngine();
engine.buildReport(doc, sender, "s");

doc.save(getMyDir() + "out.docx");

我与 Aspose 合作,担任开发人员传道者。

【讨论】:

以上是关于从java中的模板文件创建docx文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Google App Engine 中将 docx 文件呈现为 django 模板

使用 PHP 从模板创建新的 PDF

rundll32 url.dll,FileProtocolHandler

使用 angularjs 从 PHP REST API 下载 docx 文件

使用 xslt 模板将多个图像添加到 docx 文件

使用python根据模板批量生成docx文档