回车在XSLT for Excel中返回

我想将回车添加到生成Excel文件的XSLT文件。 我的情况是,我在Excel单元格中有一个非常长的string。 我希望文本环绕在单元格内。 有什么build议? 我试着按照这里的build议,但没有为我的情况。

谈到风格的评论,似乎我无法控制的风格,无论我手动把'样式',当我通过文本编辑器查看生成的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> 

我已经find了解决如何在Excel中做一些事情的方法,就是让Excel来展示给你! 换句话说,打开Excel,在单个单元格中input一些文本,包括回车符(按ALT + ENTER执行回车),将其保存为Excel XML,然后在记事本中打开文件以查看正在进行的操作。

你应该看到的是,在文档的Styles元素中,应该为你的单元格设置一个特定的样式

 <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; string,你将不得不这样做

  <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逐字输出一个换行符,而不是转义值的实际文本。