【发布时间】:2017-04-19 14:23:12
【问题描述】:
我正在使用 OpenXml SDK 生成 word 2013 文件。我在服务器上运行(服务器解决方案的一部分),所以自动化不是一个选项。
基本上我有一个从后端系统输出的 xml 文件。这是一个非常简化的示例:
<my:Data
xmlns:my="https://schemas.mycorp.com">
<my:Customer>
<my:Details>
<my:Name>Customer Template</my:Name>
</my:Details>
<my:Orders>
<my:Count>2</my:Count>
<my:OrderList>
<my:Order>
<my:Id>1</my:Id>
<my:Date>19/04/2017 10:16:04</my:Date>
</my:Order>
<my:Order>
<my:Id>2</my:Id>
<my:Date>20/04/2017 10:16:04</my:Date>
</my:Order>
</my:OrderList>
</my:Orders>
</my:Customer>
</my:Data>
然后我使用 Word 的 Xml 映射窗格将此数据映射到内容控件:
我只是简单的复制word文件,生成新文件的时候写入新的Xml数据。
这按预期工作。当我更新 xml 部分时,它反映了我后端的数据。
想一想,有一个案例不起作用。如果客户没有订单,则模板内容保留在文档中。 xml数据是:
<my:Data
xmlns:my="https://schemas.mycorp.com">
<my:Customer>
<my:Details>
<my:Name>Some customer</my:Name>
</my:Details>
<my:Orders>
<my:Count>0</my:Count>
<my:OrderList>
</my:OrderList>
</my:Orders>
</my:Customer>
</my:Data>
(见空订单列表)。
在 Word 中,xml 窗格反映了正确的数据(意味着没有 Order 节点):
但是如你所见,模板内容还在。
基本上,当没有订单(或至少是一个空表)时,我想隐藏订单列表。
我该怎么做?
PS:如果有帮助,我上传了 word 和 xml 文件,以及一个注入数据的小 PowerShell 脚本:repro.zip
【问题讨论】:
-
当然 - 请上传文档。
-
@Taterhead: 瞧,它已经上传了
标签: ms-word openxml openxml-sdk