gpt4 book ai didi

ms-word - 映射到 Word OpenXml 部件中的可选数据时,如何使部分可选?

转载 作者:行者123 更新时间:2023-12-04 15:52:31 25 4
gpt4 key购买 nike

我正在使用 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 映射 Pane 将此数据映射到内容控件:

enter image description here

我只是复制 word 文件,并在生成新文件时写入新的 Xml 数据。

这按预期工作。当我更新 xml 部分时,它反射(reflect)了我后端的数据。

想了想,有一个案例是行不通的。如果一个 客户无订单,模板内容保存在文档 . 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 Pane 反射(reflect)了正确的数据(意味着没有 Order 节点):

mapping with empty data

但是如您所见,模板内容仍然在这里。

基本上,当没有订单(或至少是一个空表)时,我想隐藏订单列表。

我怎样才能做到这一点?

PS:如果有帮助,我上传了 word 和 xml 文件,以及一个注入(inject)数据的小 PowerShell 脚本: repro.zip

最佳答案

感谢您分享您的文件,以便我们更好地帮助您。

我很难用现有的 Word 内容控件、XML 文件和将 XML 添加到 Word 文档的 PowerShell 脚本来解决您的问题。我发现似乎是 Microsoft's VSTO example solution解决你的问题,但我无法让它干净地工作。

然而,我能够编写一个简单的 C# 控制台应用程序,该应用程序根据您的 XML 数据生成一个 Word 文件。生成 Word 文件的 OpenXML 代码是从 Open XML Productivity Tool 生成的代码。然后我添加了一些逻辑来读取您的 XML 文件并根据数据中有多少订单动态生成第二个表行。 I have uploaded the code for you to use if you are interested in this solution .注意:xml 数据文件应该在 c:\temp 中,生成的 word 文件也应该在 c:\temp 中。

此解决方案的另一个额外好处是,如果您要将所有客户数据添加到一个 XML 文件中,应用程序将在您的临时目录中创建单独的 word 文件,如下所示:
customer_<name1>.docxcustomer_<name2>.docxcustomer_<name3>.docx
等等

这是从第一个 xml 文件生成的文档
enter image description here

这是从第二个带有空行的 xml 文件生成的文档
enter image description here

希望这可以帮助。

关于ms-word - 映射到 Word OpenXml 部件中的可选数据时,如何使部分可选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43498503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com