Xml 从XSL:table设置excel样式错误
所以我想在我的excel XSLT中添加一些样式。逻辑运行良好,但当我尝试添加样式时,它的错误如下 Excel错误: 装载过程中,以下区域出现问题: 桌子 中列出的错误: c:\Users\uname\appdat\microsoft\windows\temporaryInternetFiles\content.MSO\xxxxxxxx.log 我的代码是:Xml 从XSL:table设置excel样式错误,xml,xslt,spreadsheetml,Xml,Xslt,Spreadsheetml,所以我想在我的excel XSLT中添加一些样式。逻辑运行良好,但当我尝试添加样式时,它的错误如下 Excel错误: 装载过程中,以下区域出现问题: 桌子 中列出的错误: c:\Users\uname\appdat\microsoft\windows\temporaryInternetFiles\content.MSO\xxxxxxxx.log 我的代码是: <?xml version="1.0" encoding="UTF-8"?> <?mso-application pro
<?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>
实际上,我想加粗标题的字体,保留边框并为标题添加背景色。XSLT中有两个错误:
在任何模板之外,它们根本不会出现在输出文档中。它们需要在工作簿中ss:ID
属性只有样式有ss:ID,要引用样式,请改用ss:StyleID=“s62”
XML ERROR in Table
REASON: Illegal Tag
FILE: C:\temp\Untitled15.xls
GROUP: Row
TAG: Cell
ATTRIB: ID
VALUE: s62
Office会抛出臭名昭著的错误消息,但查看结果文档通常会给您一些线索。你好,Tobias,感谢您的上述回复。关于上述XSL,我还有一个问题。因为这个XSL使用多个xml。我无法在同一工作簿中使用不同的XML创建不同的工作表。@user3447978您可以使用
document()
函数在其他XML文档上应用模板,然后在源文件上应用模板。如果您有任意数量的文档,那么包含一个将它们合并为一个文档的转换前步骤可能会有所帮助。所以我尝试了这种方法