【问题标题】:DocX4: How to add table in word docx using Quick part field and write to that template with a tableDocX4:如何使用快速部分字段在 word docx 中添加表格并使用表格写入该模板
【发布时间】:2016-04-19 08:01:11
【问题描述】:

我想在我的 docx 模板中添加表格。我知道如何只使用一个简单的字段以及如何使用该模板并将值写入其中。但是我怎样才能创建一个表并写入模板。假设我有一个 Student 对象列表,我将如何将它写在表格中?

这是添加字段名称的方式。

Quick Parts > Fields > 在类别中选择 MergeField 并编写 所需的字段名称

下面是如何使用 docx4j 将值写入它

Map<DataFieldName, String> map = new HashMap<DataFieldName, String>();
map.put(new DataFieldName("myName"),"yourName");
                MailMerger.setMERGEFIELDInOutput(MailMerger.OutputField.DEFAULT);

MailMerger.performMerge(template, map, true);

template.save(new File("C:/temp/OUT_SIMPLE.docx") );

【问题讨论】:

    标签: docx4j


    【解决方案1】:

    假设您希望每个列表项有一行,最简单的方法是遍历列表,编写表格行。

    要生成合适的代码,请创建一个 Word 文档,其中包含您想要的表格,然后generate corresponding code

    或者,您可以使用 OpenDoPE 内容控制数据绑定,将重复包装在表格行周围。这是一个更通用的解决方案,但有一个学习曲线......

    【讨论】:

    • 嗨@JasonPlutext,你能举个例子吗?我见过写在表格中的代码,但没有使用 mergeField .. 1) smartjava.org/content/… 2) smartjava.org/content/… 。我使用 MailMerger 在模板中编写,但我认为我不能使用同一个类来编写表格。
    • 您无法使用 MERGEFIELD 做我理解的您想要的事情。但见wordbanter.com/showthread.php?p=495954
    • 我的错,也许你误解了我的问题。我会尝试改写它,我想使用mergefield创建一个带有表格的模板,我想知道如何使用docx4j来填充表格......我认为可以在模板中填充表格使用 docx4j 是因为 docx 中有 Merge TableStart 和 MergeField TableEnd 的关键字和示例,肯定 docx4j 没有忘记实现那个,这里是genus.no/?ArticleKey=IDA444FE8AEDDC4DE8
    • 这些是 Genus 专有扩展。它们可以在 docx4j 中复制,但还没有人这样做。
    • 如果 MergeField 不可行,我有什么选择?使用 DocVariable 等?我在模板中看到了使用 DocVariable 的代码,但该表似乎是硬编码的。屏幕截图未显示表中使用的变量。这是wiki.eclipse.org/Scout/HowTo/3.9/…。该模板将由用户创建,因此他们可以在表格中执行任何他们想要的操作,例如更改列的位置,仅显示他们想要查看的字段等,因此我尽可能不希望代码被硬编码。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多