我使用softartisans中的WordTemplate生成报告。报告的某些部分可能没有数据。当数据为空时,如何从生成的Word文档中删除部分?
我将不胜感激。
感谢。
答案 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字段的缺点是它可以使模板构建起来更复杂。根据您的模板是由用户还是开发人员创建,这可能是也可能不是您的问题。