创建对不同工作表的动态引用

时间:2018-03-26 08:58:52

标签: xml excel xslt

我需要做的是创建一个基于工作表的引用,如果工作表是否已创建(我已经完成)。 我试图做的是以下,

 <Worksheet ss:Name="RELATÓRIO">
        <Table>
          <ss:Column ss:Width="300"/>
          <xsl:for-each select="RELATORIO/MODULO">
            <xsl:choose>
              <xsl:when test="NAME='ObtemIdentificacao_P'">
                 <xsl:variable name="cnt">
                    <xsl:value-of select="position() + 1"/>
                </xsl:variable>
                <Row ss:Index="$cnt">
                  <Cell ss:Index="1" ss:StyleID="sLink" ss:HRef="concat('#Identificacao!A',$cnt)">
                    <Data ss:Type="String">IDENTIFICAÇÃO</Data>
                  </Cell>
                </Row>
              </xsl:when>
              <xsl:when test="NAME='ObtemSumarioSNC_P'">
                <xsl:variable name="cnt">
                  <xsl:value-of select="position() + 1"/>
                </xsl:variable>
                <Row ss:Index="$cnt">
                  <Cell ss:Index="1" ss:StyleID="sLink" ss:HRef="concat('#Sumario!A',$cnt)">
                    <Data ss:Type="String">SUMÁRIO</Data>
                  </Cell>
                </Row>
              </xsl:when>
            </xsl:choose>
          </xsl:for-each>
        </Table>
      </Worksheet>

我正在使用完全相同的xsl:when来检查“MODULO是否存在我只是使用/来回到XML文件的开始并再次运行它,但这一次实际上做了一些事情XML。

不幸的是,这种方式不起作用。这可能与concatvariable

有关

检查NAME的循环工作,我已经可以创建所有工作表并显示我想要的信息,我只需要能够创建对创建的工作表的引用。我只需要它们是简单的可点击文本,以不同的行显示。

希望你能给我一些启示和感谢!

1 个答案:

答案 0 :(得分:0)

而不是ss:HRef="concat('#Identificacao!A',$cnt)"我认为您需要ss:HRef="#Identificacao!A{$cnt}",而不是ss:Index="$cnt"只需ss:Index="{$cnt}"

你也可以缩短

          <xsl:variable name="cnt">
              <xsl:value-of select="position() + 1"/>
            </xsl:variable>

<xsl:variable name="cnt" select="position() + 1"/>