0

我想将回车添加到生成 Excel 文件的 XSLT 文件中。我的情况是我在 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>
4

1 回答 1

3

我找到了解决如何在 Excel XML 中做某事的方法,就是让 Excel 向您展示!换句话说,打开 Excel,在单个单元格中键入一些文本,包括回车(按 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;字符串,您必须这样做

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

于 2013-05-17T07:32:55.507 回答