XSLT for Excel中的回车

时间:2013-05-15 18:03:13

标签: excel xslt

我想将回车添加到生成Excel文件的XSLT文件中。我的情况是我在Excel单元格中有一个非常长的字符串。我希望文本在保留在单元格内时环绕。有什么建议?我尝试遵循建议here,但它对我的情况不起作用。

谈论样式注释,似乎我无法控制样式,无论我手动放在“样式”下,当我通过文本编辑器查看生成的excel文件时,我总是看到以下内容:

<Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
  <Style ss:ID="s62">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Arial" ss:Bold="1"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
 </Styles>

1 个答案:

答案 0 :(得分:3)

我找到了解决如何在Excel XML中执行某些操作的方法,就是让Excel向您展示!换句话说,打开Excel,在包含回车的单个单元格中键入一些文本(执行ALT + ENTER以执行回车),将其另存为Excel XML,并在记事本中打开文件以查看正在进行的操作。

您应该看到的是,在文档的样式元素中,您的单元格应该有特定的样式

<Style ss:ID="s62">
   <Alignment ss:Vertical="Bottom" ss:WrapText="1"/>
</Style>

因此,您需要更改XSLT以输出这样的样式。 ss:ID 属性可以是任何内容,但 ss:WrapText 属性在此处非常重要。显然,你可以将它与其他样式结合起来,比如将单元格加粗。

然后,对于单元格中的文本,您需要确保文本&#10;按字面输出您想要换行的位置。

<Row ss:AutoFitHeight="0" ss:Height="33">
   <Cell ss:StyleID="s62"><Data ss:Type="String">Testing&#10;Linebreak</Data></Cell>
</Row>

注意这里对StyleID的引用。就XSLT而言,要添加&#10;字符串,您必须这样做

  <xsl:value-of select="substring(text(), 1, 50)" />
  <xsl:text disable-output-escaping="yes">&amp;#10;</xsl:text>
  <xsl:value-of select="substring(text(), 51, 50)" />

'disable-output-escaping'是为了阻止XSLT输出换行符而不是转义值的实际文本。