2013-05-15 33 views
0

我想将回车添加到生成Excel文件的XSLT文件。我的情况是,我在Excel单元格中有一个非常长的字符串。我希望文本在环绕单元时环绕。有什么建议?我试着按照建议here,但它不适合我的情况。XSLT for Excel中的回车返回

谈到风格评论,似乎我无法控制风格,无论我手工放在'风格'下,当我通过文本编辑器查看生成的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> 
+0

在这种情况下,你是指“Excel XML”文件吗? –

+0

@TimC是的,我做过 –

回答

3

我已经找到了解决办法,如何在Excel中做一些事情,就是让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)" /> 

“禁用输出转义”是停止XSLT字面上outputing断行,而不是实际的文本逃脱的价值。

+0

嗨,你的答案看起来不错,但我仍然有问题。我将它们包含在上面的“编辑”中(太长以待评论)。 –

+0

嗯....我不知道为什么Excel会忽略你的风格。你可以检查你是否在正确的地方输出** Styles **元素? (它应该是** Workbook **元素的子元素。)它还需要位于名称空间“urn:schemas-microsoft-com:office:spreadsheet”中。 –