在MSWord邮件合并中汇总XML数据

时间:2017-03-03 20:10:30

标签: xpath ms-word mailmerge

我有一个用Word编写的报告卡,它使用XML文件作为输入。在XML文件中,如果学生在三个学期中都保持同一部分,那么该课程将有一个节点;如果他们在三个月更换部分,他们每个部分都会有一个节点。节点看起来像这样(大大简化):

<ReportCardSectionFB Abs1="2" Abs2="11" CourseID="ELMATH1" CourseTitle="Math" PeriodStart="3" TeacherName="Jones, Jennifer" TermCode="Year" SectionID="ELMATH1-4" />

<ReportCardSectionFB Abs1="1.50" Abs2="6" CourseID="ELMATH1" CourseTitle="Math" PeriodStart="3" TeacherName="Smith, Tina" TermCode="Year" SectionID="ELMATH1-3" />

XML中没有关于节点属于哪个三个月的指示符。

在Word文档中,我们使用以下邮件合并命令提取缺席数据:

{MERGEFIELD  "ReportCardSectionFB[@PeriodStart='3']/ @Abs1" \# 0.#  \* MERGEFORMAT }

在这种情况下不起作用:它只从它遇到的第一个节点获得缺席数据,即:2.0。有没有办法得到所有3期课程的@Abs1之和,即:3.5?如果没有,有没有办法只获得第3期的最后一个@Abs1,即:1.5

2 个答案:

答案 0 :(得分:0)

我建议您使用此第三方产品,该产品可以使用xml作为输入,并且能够将其与MS Word模板合并。我也比内置的Word邮件合并功能强大得多。您可以看到一些示例here

答案 1 :(得分:0)

你也可以尝试总结Synergy中的缺席 - 在AttDef1,2等下面有一个新的复选框,它将数据范围的所有缺席加起来 - 包括整个日期范围的全天数据,无论部分注册或部分如何大体时间。这样,每个部分的缺席应该是相同的,如果这适用于您所在的区域。

您还可以尝试使用Word中的SET功能将MERGEFIELDS嵌套为书签,然后使用Word运算符函数添加书签。