将Excel表格列范围值提取到Word doc' gridSpan'使用XSLT 2.0和Saxon-PE 9.2.0.6的元素

时间:2016-06-16 19:03:24

标签: xslt xslt-2.0

在Saxon-PE 9.2.0.6中使用XSLT 2.0,我需要使用工作表的mergecells元素中的值从Excel数据sheet.xml中将元素'w:gridSpan'拉到第2行中的跨区列数。任何人都可以给我一个关于如何做到这一点的建议吗?

输入XML是这样的:

b

我的XSLT中与输入XML有关的部分:

    <row r="2" spans="1:6" ht="33" customHeight="1">
        <c r="A2" s="6" t="s">
            <v>33</v>
        </c>
        <c r="B2" s="12" t="s">
            <v>0</v>
        </c>
        <c r="C2" s="13"/>
        <c r="D2" s="13"/>
        <c r="E2" s="13"/>
        <c r="F2" s="13"/>
    </row>

    …………

<mergeCells count="2">
    <mergeCell ref="B1:F1"/>
    <mergeCell ref="B2:F2"/>
</mergeCells>

期望的输出:

        <w:tc>
          <w:tcPr>
            <w:vAlign w:val="bottom"/>
            <xsl:choose>
              <xsl:when test="**e:sheetData/e:row[position() = 2]**">
                <xsl:element name="w:gridSpan">
                  <xsl:attribute name="w:val">
                    <xsl:value-of select="**dg3:get_column_span**"/>
                  </xsl:attribute>
                </xsl:element>
              </xsl:when>
            </xsl:choose>

我还建议使用以下两个函数,但不知道如何实现它们以获取电子表格行1和2的第2行示例中的列数,并且建议的2个函数如下:

        <w:tc>
           <w:tcPr>
              <w:vAlign w:val="bottom"/>
              <w:gridSpan w:val="1"/>
           </w:tcPr>

1 个答案:

答案 0 :(得分:0)

不确定你要从哪里开始,这将决定精确的路线但是:

<xsl:attribute name="w:val">
<xsl:value-of select="mergeCells/@count"/>
</xsl:attribute>

为你获取2 ...

另外我很困惑为什么你在/选择这里时使用它并不是一个直接的模板匹配。