5

在处理 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

4

0 回答 0