OpenXml表控件数据绑定

时间:2014-10-01 16:54:48

标签: c# openxml

我的任务是从docx模板和xml自动化文档生成过程。 我发现"如何" http://ericwhite.com/blog/2011/03/29/release-of-v2-of-doc-gen-system-xpath-in-content-controls/

上的示例

但我遇到了问题并且不知道如何处理复杂的表格...... 例如,我的table-part xml看起来像:

<TBL>
 <ROW>
    <CLMN_1>0</CLMN_1>      
    <CLMN_2>Date</CLMN_2>
    <CLMN_3>Customer name</CLMN_3>
    <CLMN_4>Order No</CLMN_4>
    <CLMN_5>Account</CLMN_5>
 </ROW>
 <ROW>
    <CLMN_1>0</CLMN_1>
    <CLMN_2>Invoice date</CLMN_2>
    <CLMN_3>Customer Account/IBAN</CLMN_3>
    <CLMN_4>Explanation</CLMN_4>
    <CLMN_5>Calling number</CLMN_5>
    <CLMN_6>Cash out</CLMN_6>
    <CLMN_7>Cash in</CLMN_7>
 </ROW>
 <ROW>
    <CLMN_1>1</CLMN_1>
    <CLMN_2>Current amount</CLMN_2>
    <CLMN_3>366,47</CLMN_3>
 </ROW>
 <ROW>
    <CLMN_1>2</CLMN_1>
    <CLMN_2>05.07.2014.</CLMN_2>
    <CLMN_3 />
    <CLMN_4>2 -   Barclays ATM c7241152 Barcelona , Barcelona Street</CLMN_4>
    <CLMN_5 />
    <CLMN_6 />
    <CLMN_7 />
 </ROW>
</TBL>

从那个xml我需要根据以下内容创建表: 第一个标签(clmn_1)&#34;描述&#34;行应该如何以及该行是什么(页眉/页脚/正文)。 在我的示例中,如果clmn_1的值== 0 - >那行是标题 每隔一个clmn_X in表示该行中的数据位置(例如clmn_7数据应该在第6列等等

我可以根据eric white的例子构建这样的东西吗?

链接图片和详细解释http://tinypic.com/r/an1w7q/8

请求帮助和想法如何处理这个怪物:)

1 个答案:

答案 0 :(得分:0)

我建议的方法与Eric的方法略有不同,但您可以使用OpenDoPE

在C#中使用https://www.nuget.org/packages/docx4j.NET/重复来处理

您需要创建一个包含单个表行和7列的docx,然后将单元格1到7绑定到相应的CLMN_元素

然后将表格行包装在重复的内容控件中。

要进行此设置,您可以使用http://www.opendope.org/downloads/authoring-friendly/setup.exe

转到创作标签,添加示例XML文件,然后将元素从任务窗格拖放到文档表面。

然后,在运行时,要注入XML,请使用等效于ContentControlsMergeXML.java

的C#