样式excel来自XSL:表错误

时间:2014-04-04 19:59:44

标签: xml xslt spreadsheetml

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

Excel错误: 在加载期间出现以下问题: 表

错误列于: C:\ Users \用户UNAME \ appdat \微软\的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>

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

1 个答案:

答案 0 :(得分:0)

XSLT中有2个错误:

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

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

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

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

    办公室抛出了臭名昭着的错误消息,但是查看结果文档通常会给你一些线索。