在处理 word 模板时,需要在IF 字段中放置重复块,类似于:
使用 .DOC/.DOCX 的 WordTemplate 示例代码:
{ IF {MERGEFIELD DataSource1.FieldName}=”123456” “IF SECTION
Then a repeat block here using a table row that is bookmarked:
------------------------------------------------------------
| «Datasource1.IdColHeader» | «Datasource1.NameColHeader» |
------------------------------------------------------------
|«RepeatingDatasource2.Id» | «RepeatingDatasource2.Name» |
------------------------------------------------------------
” “Else Section
Second set of repeat block with different datasource
-------------------------------------------------------
| Id | Name |
-------------------------------------------------------
|«RepeatingDatasource3.Id»|«RepeatingDatasource3.Name»|
-------------------------------------------------------
”}
使用 WordWriter 的 WordTemplate 的 C# 示例代码:
private static void ProcessWordTemplate(WordTemplate docTemp)
{
try
{
docTemp.Process();
}
catch (Exception ex)
{
throw new ApplicationException(ex.Message);
}
}
对于DOCX WordTemplate,docTemp.Process()
调用时会发生错误。我得到以下异常:
异常类型:System.Application
异常消息:WordWriter 错误:无法重写书签
对于DOC WordTemplate,文档已呈现,但即使实际结果大于 1,它也仅在重复块中显示一行。
但是,如果反过来,则重复块中的IF字段、 IF 字段和成功评估的重复块。生成的文档显示所有记录。
请注意,我使用的是OfficeWriter 的 WordWriter Version 9。