【发布时间】:2016-08-27 19:50:18
【问题描述】:
这个让我完全糊涂了。我有一个多文本颜色单元格。大多数数据以一种或另一种方式共享,所以我想使用模板来完成大部分工作。为此,我试图将文本颜色作为参数传递给模板。一个超级简单的例子:
<xsl:variable name="textColor">
<xsl:choose>
<xsl:when test="$cellColor = 's73'">
<xsl:text>#FFFFFF</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>#000000</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:call-template name="detailLines">
<xsl:with-param name="textColor" select="$textColor"/>
</xsl:call-template>
<xsl:template name="detailLines">
<xsl:param name="textColor"/>
<!-- Start new line -->
<xsl:text disable-output-escaping="yes">&#10;</xsl:text>
<!-- Bunch of stuff after this -->
<Font html:Color="{$textColor}">
<xsl:text>[</xsl:text>
</Font>
通常我对此没有任何问题,但是当文本颜色似乎没有通过时,我感到很震惊。但是,当我调试时,文本颜色正在传递。进一步调查显示,创建的 XML 也有文本颜色,但 Excel 不显示它,而是默认为黑色。
我将 Excel 命名空间放在它们通常的位置,即使尝试移动它们也无助于解决问题。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<xsl:output method="xml" encoding="UTF-8"/>
任何想法都会很棒!我没有遇到过这样的问题,即变量按预期运行,但 Excel 没有。
编辑以添加其他信息:
我发现了不同之处,但我不确定如何解释它。
<Font html:Color="#FFFFFF">Two Box</Font>
<Font html:Color="#FFFFFF">]</Font>
<Font html:Color="#FFFFFF" xmlns="urn:schemas-microsoft-com:office:spreadsheet">[</Font>
前两行来自没有进入 detailLines 模板的代码,因此它直接调用了 cellColor 变量。最后一行来自传递变量的模板。命名空间似乎导致了我的问题,但我无法理解 1)它为什么存在,以及 2)如何让它消失。
编辑 - 解决 cellColor 注释
由于多种原因,我无法将实际代码放在这里,但 cellColor 变量是在 textColor 之前计算的。编辑最多的是:
<xsl:variable name="cellColor">
<xsl:choose>
<xsl:when test="A">
<xsl:text>s216</xsl:text>
</xsl:when>
<xsl:when test="B'">
<xsl:text>s73</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>s210</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
【问题讨论】:
-
你是如何计算 $cellColor 的?任何 xslt 代码都会有所帮助。
-
您也可以显示转换后的 xml 输出以了解为什么 excel 无法显示颜色。
-
你的问题一点都不清楚。首先,我们需要知道转换的结果应该是什么,以便 Excel 正确显示它。找出(在这里说:msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx)并将其添加到您的问题中。然后提供转换的可重现示例(包括正在使用的任何输入),以便我们可以修复它并使其输出上述预期结果。见:minimal reproducible example
-
@Jason H 我几乎可以肯定您只是使用纯 xml 来显示在 excel 中,这很好,因为您不必为单元格分配样式。如果您想要 excel 中的单元格样式,例如颜色、粗体文本,您当然需要在您的 xsl 和单元格中定义样式的工作簿/工作表。