excel - 无法使换行符在 XSLT 到 Excel 中工作

标签 excel xslt transform newline ampersand

我有一个 XSLT 文件,用于将 XML 转换为包含 Excel 标记(如行、单元格等)的输出 XML。

XSLT 文件具有以下行:

    <xsl:output method="xml" version="1.0" indent="yes" />

我需要在单个 Excel 单元格中显示多行文本,并且我正在尝试通过此模板创建该单元格:
<Cell>
  <Data ss:Type="String">
    <xsl:value-of select="First Line" />
      <xsl:text disable-output-escaping="yes">&amp;#10;</xsl:text>
    <xsl:value-of select="Second Line" />
  </Data>
</Cell>

我正在尝试在输出中获取文字字符实体,如下所示:
<Cell>
  <Data ss:Type="String">First Line&#10;Second Line</Data>
</Cell>

但相反,输出 XML 是:
<Cell>
  <Data ss:Type="String">First Line&amp;#10;Second Line</Data>
</Cell>

因此,当我将输出 XML 保存为 .xls 并在 Excel 365 中打开它时,文本不是多行的。相反,相应的单元格包含 Lieral 字符串:

First Line&#10;Second Line



我也尝试了以下方法,但它也不起作用:
<xsl:text disable-output-escaping="yes"><![CDATA[&]]></xsl:text>

这也不起作用:
<xsl:text>&amp;#</xsl:text>
<xsl:value-of select="10" />
<xsl:text>;</xsl:text>

我怎样才能得到我需要的结果?

我正在使用 Office 365 和 Visual Studio 2012。

最佳答案

您澄清说您正在尝试发出包含数字字符实体的 XML 文本,特别是 &#10; .你提出的第一个例子是一个正确的方法,它对我有用,与你的说法相反。

例如,处理这个 XML:

<cell/>

根据此样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="xml" version="1.0" indent="yes"/>

  <xsl:template match="cell">
    <cell>
      <xsl:value-of select="'First Line'"/>
      <xsl:text disable-output-escaping="yes">&amp;#10;</xsl:text>
      <xsl:value-of select="'Second Line'"/>
    </cell>
  </xsl:template>

</xsl:stylesheet>

通过 xsltproc产生这个输出:
<?xml version="1.0"?>
<cell>First Line&#10;Second Line</cell>

,这是您正在寻找的形式,据我所知。特别是带有 disable-output-escaping="yes" 的文本字段是用于发出具有标记形式的文字文本的适当方法。

我倾向于怀疑您说您首先尝试的特定方法确实产生了您声称的输出。如果没有 disable-output-escaping,这就是你应该得到的。 ,所以也许您在实际测试中省略了该属性或拼写错误。如果您完全按照所示包含它并获得了您呈现的输出,那么我倾向于认为您的 XSLT 处理器已损坏。

关于excel - 无法使换行符在 XSLT 到 Excel 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428680/

相关文章:

excel - 根据 Excel 表格的另一列自动填充列

xslt - 如何在xslt中的正则表达式中处理 "<"和 ">"

excel - 在 Visio 中选择事件页面

excel - 有没有办法将 mac 终端输出直接保存到文件中?

performance - .net 中的 XSLT 转换性能

xml - XSLT 交换元素值

javascript - Canvas 变换旋转工件

java - XSLT 应用特定值列表的模板

javascript - 居中旋转的 Div

excel - 如何在 Excel 中查找并提取重复的文本字段