0

我正在使用来自 softartisans 的 WordTemplate 来生成报告。报告的某些部分可能没有数据。当数据为空时,如何从生成的 Word 文档中删除部分?

我将不胜感激任何帮助。

谢谢。

4

2 回答 2

0

在将要插入的数据添加到文档之前,请尝试检查要插入的数据是否存在空值。通常,用空字符串替换 null 就可以了。如果有任何代码,我会提供帮助。

于 2014-05-07T07:50:25.590 回答
0

实现此目的的一种方法是在模板中的可选部分周围放置书签,并使用BookmarksToRemove方法(在 8.4 版中引入)告诉WordTemplate对象要删除哪些部分。此方法采用书签名称的字符串数组。您的代码需要确定哪些带书签的部分不包含数据。

WordTemplate wt = new WordTemplate();
wt.Open(@"c:\templates\Template.docx");
string [] bookmarks = {"OptionalSection1", "OptionalSection2"};
wt.BookmarksToRemove(bookmarks);
wt.Process();
wt.Save(@"c:\reports\Report.docx");

另一种选择是在 Word 模板文件中使用IF 字段。您可以在 IF 字段中使用条件逻辑来显示或隐藏文档的整个部分,具体取决于特定合并字段中的值。为了让 OfficeWriter 计算服务器上的 IF 字段,您需要打开UpdateIfFields属性。如果要在评估后删除 IF 字段,可以使用UnlinkIfFields属性(在 8.1 版中引入)

WordTemplate wt = new WordTemplate();
wt.UpdateIfFields = true;
wt.UnlinkIfFields = true;

使用 IF 字段的优点是可以自动处理数据中的空结果。使用 IF 字段的缺点是它会使模板的构建更加复杂。这对您来说可能是也可能不是问题,具体取决于您的模板是由用户还是开发人员创建的。

于 2014-05-09T15:36:17.023 回答