WordWritter WordTemplate - 如何在数据为空时删除节?

时间:2014-05-05 15:22:44

标签: officewriter

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

我将不胜感激。

感谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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 fields。您可以在IF字段中使用条件逻辑来显示或隐藏文档的整个部分,具体取决于特定合并字段中的值。为了让OfficeWriter计算服务器上的IF字段,您需要打开UpdateIfFields属性。如果您希望在评估IF字段后将其删除,则可以使用UnlinkIfFields属性(在8.1版中引入)

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

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