0

所以我想在我的 excel XSLT 中添加一些样式。逻辑工作正常,但是当我尝试添加样式时,它会给出错误,例如

Excel 错误:加载过程中出现以下区域的问题:表格

列出的错误:c:\Users\uname\appdat\microsoft\windows\temporaryInternetFiles\content.MSO\xxxxxxxx.log

我的代码是:

<?xml version="1.0" encoding="UTF-8"?>
<?mso-application progid="Excel.Sheet"?>
<xsl:stylesheet 
    xmlns:ns="urn:control.services........" 
    xmlns:m="urn:messages........." 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:o="urn:schemas-microsoft-com:office:office"
     xmlns:html="http://www.w3.org/TR/REC-html40"
        xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <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">
                   <Font ss:FontName="Calibri" x:Family="Swiss" ss:Size="12" ss:Color="#000000"   ss:Bold="1"/>
                   <Interior ss:Color="#79DCFF"/>
                  </Style>
    </Styles>
    <xsl:output indent="yes"/>
    <xsl:variable name="header" select="distinct-values(/ns:ServiceRequest/m:ItemRequest/ns:ServiceRequest/m:*/m:*/local-name())"/>
    <xsl:variable name="fields" select="distinct-values(/ns:ServiceRequest/m:ItemRequest/ns:ServiceRequest/m:*/m:*/name())"/>
    <xsl:template match="/">
        <ss:Workbook>
            <ss:Worksheet ss:Name="SomeData">
                    <ss:Table>
                    <xsl:for-each select="($header)">
                    <ss:Column ss:Width="160"/> 
                    </xsl:for-each>
                    <ss:Row>
                        <xsl:for-each select="($header)">
                            <ss:Cell ss:ID="s62">
                                <ss:Data ss:Type="String">
                                    <xsl:value-of select="."/>
                                </ss:Data>
                                </ss:Cell>
                        </xsl:for-each>
                    </ss:Row>
                    <xsl:apply-templates select="ns:ServiceRequest/m:ItemRequest/ns:ServiceRequest/m:*"/>
                    </ss:Table>
                </ss:Worksheet>
            </ss:Workbook>
    </xsl:template>

    <xsl:template match="m:*">
        <xsl:variable name="data" select="."/>
        <ss:Row>
            <xsl:for-each select="$fields"> 
                <ss:Cell>
                    <ss:Data ss:Type="String">
                        <xsl:value-of select="$data/*[name()=current()]/text()"/>
                    </ss:Data>
                </ss:Cell>
             </xsl:for-each>
        </ss:Row>
    </xsl:template>
</xsl:stylesheet>

我实际上想加粗标题的字体,保留边框并为标题提供背景颜色。

4

1 回答 1

0

您的 XSLT 中有 2 个错误:

  1. <Styles>在任何模板之外,它们根本不会出现在您的输出文档中。他们需要在 Workbook 中。

  2. 单元格没有ss:ID属性,只有 Style 有 ss:ID,以引用 Style 使用ss:StyleID="s62"

查看内部c:\Users\uname\appdat\microsoft\windows\temporaryInternetFiles\content.MSO\xxxxxxxx.log您无法浏览到该位置,该文​​件夹已隐藏,因此将该路径复制到您的资源管理器地址栏中或“运行”窗口)它会为您提供更多信息,例如:

XML ERROR in Table
REASON: Illegal Tag
FILE:   C:\temp\Untitled15.xls
GROUP:  Row
TAG:    Cell
ATTRIB: ID
VALUE:  s62

Office 会抛出臭名昭著的错误消息,但是查看结果文档通常会给您一些线索。

于 2014-04-05T09:28:45.130 回答