You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用XSL样式表打开XML衍生数据时多余行生成问题求解

解决Excel导出时Description字段跨多行拆分的问题

问题根源

旧版XLS(Excel 97-2003)会把XML里的换行符、<p>段落标签、<li>列表标签解析成单元格换行或新行,导致Description内容被拆成多个单元格行,而非锁定在单个单元格内,最终引发排序时内容分离的问题。

XSL样式表修改方案

1. 统一转换Description内的块级元素为单元格内换行

在XSL中新增模板,把所有段落、列表项替换成Excel支持的单元格内换行符(&#10;),同时保留列表的前缀格式:

<xsl:template match="Description">
  <td style="white-space: pre-wrap;">
    <xsl:call-template name="format-description"/>
  </td>
</xsl:template>

<xsl:template name="format-description">
  <!-- 处理段落标签 -->
  <xsl:for-each select="p">
    <xsl:value-of select="."/>
    <xsl:if test="position() != last()">
      <xsl:text>&#10;</xsl:text>
    </xsl:if>
  </xsl:for-each>
  <!-- 处理列表标签 -->
  <xsl:for-each select="li">
    <xsl:text>- </xsl:text>
    <xsl:value-of select="."/>
    <xsl:if test="position() != last()">
      <xsl:text>&#10;</xsl:text>
    </xsl:if>
  </xsl:for-each>
  <!-- 处理原生文本换行 -->
  <xsl:if test="not(p) and not(li)">
    <xsl:value-of select="replace(., '\n', '&#10;')"/>
  </xsl:if>
</xsl:template>

2. 强制Excel识别单元格内换行

为包含Description的<td>标签添加style="white-space: pre-wrap;"样式,确保Excel解析时保留单元格内的换行,不会拆分单元格。

3. 规范表格结构

确保XSL生成的每一行单元格数量完全一致,避免使用<td colspan>等跨列属性,防止Excel自动合并相邻空白单元格。

修改后效果验证

重新导出为XLS格式后:

  • Description的所有内容(换行、段落、列表)会完整保留在单个单元格内
  • 排序时整段Description会随所在行同步移动
  • 单元格内的换行、列表前缀将正常显示

内容的提问来源于stack exchange,提问作者SpaceStrip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 07:48:24