Xml 使用xslt生成xls时MS excel中出错
我想用xls生成一个excel.xls文件。 我已经知道了如何生成文件。只有在MS Excel中打开文件时,我才会出现以下错误 文件已损坏,无法打开 这是输出Xml 使用xslt生成xls时MS excel中出错,xml,excel,xslt,xls,Xml,Excel,Xslt,Xls,我想用xls生成一个excel.xls文件。 我已经知道了如何生成文件。只有在MS Excel中打开文件时,我才会出现以下错误 文件已损坏,无法打开 这是输出 enterFile: Order_2013.xls <?xml version="1.0"?> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"><Styles><Style xmlns:ss="urn:sche
enterFile: Order_2013.xls
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"><Styles><Style xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ss:ID="Default" ss:Name="Normal"><Alignment ss:Vertical="Bottom"/><Borders/><Font/><Interior/><NumberFormat/><Protection/></Style><Style xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ss:ID="s21"><Font ss:Size="22" ss:Bold="1"/></Style><Style xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ss:ID="s22"><Font ss:Size="14" ss:Bold="1"/></Style><Style xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ss:ID="s23"><Font ss:Size="12" ss:Bold="1"/></Style><Style xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ss:ID="s24"><Font ss:Size="10" ss:Bold="1"/></Style></Styles><Worksheet xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" ss:Name="order"><Table><Column ss:AutoFitWidth="0" ss:Width="85"/><Column ss:AutoFitWidth="0" ss:Width="115"/><Column ss:AutoFitWidth="0" ss:Width="115"/><Column ss:AutoFitWidth="0" ss:Width="160"/><Column ss:AutoFitWidth="0" ss:Width="115"/><Column ss:AutoFitWidth="0" ss:Width="85"/><Column ss:AutoFitWidth="0" ss:Width="85"/><Column ss:AutoFitWidth="0" ss:Width="160"/><Row ss:AutoFitHeight="0" ss:Height="27.75"><Cell ss:StyleID="s21"><Data ss:Type="String">Example Spreadsheet</Data></Cell></Row><Row ss:AutoFitHeight="0" ss:Height="18"><Cell ss:StyleID="s22"><Data ss:Type="String">Vuurvlinderronde 15</Data></Cell></Row><Row><Cell><Data ss:Type="String">
test
</Data></Cell></Row><Row xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" ss:AutoFitHeight="0" ss:Height="18"><Cell ss:StyleID="s23"><Data ss:Type="String">
Collumn 1
</Data></Cell></Row><Row xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"><Cell ss:StyleID="s24"><Data ss:Type="String">
Collumn 2
</Data></Cell><Cell ss:StyleID="s24"><Data ss:Type="String">
Collumn 3
</Data></Cell><Cell ss:StyleID="s24"><Data ss:Type="String">
Collumn 4
</Data></Cell><Cell ss:StyleID="s24"><Data ss:Type="String">
Collumn 5
</Data></Cell></Row></Table></Worksheet></Workbook> code here
enterFile:Order_2013.xls
电子表格示例VuurvlinderRonde 15
测试
合谋1
合谋2
共谋3
共谋4
共谋5
代码在这里
这是xsl样式表
<?xml version="1.0" encoding="ISO-8859-1"?>
<?mso-application progid="Excel.Sheet"?>
<files>
<file filename="Order_%Y%.xls">
<xsl:stylesheet version="1.0"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<xsl:template match="/">
<xsl:for-each select="orders/order">
<Workbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom" />
<Borders />
<Font />
<Interior />
<NumberFormat />
<Protection />
</Style>
<Style ss:ID="s21">
<Font ss:Size="22" ss:Bold="1" />
</Style>
<Style ss:ID="s22">
<Font ss:Size="14" ss:Bold="1" />
</Style>
<Style ss:ID="s23">
<Font ss:Size="12" ss:Bold="1" />
</Style>
<Style ss:ID="s24">
<Font ss:Size="10" ss:Bold="1" />
</Style>
</Styles>
<Worksheet ss:Name="order">
<Table>
<Column ss:AutoFitWidth="0" ss:Width="85" />
<Column ss:AutoFitWidth="0" ss:Width="115" />
<Column ss:AutoFitWidth="0" ss:Width="115" />
<Column ss:AutoFitWidth="0" ss:Width="160" />
<Column ss:AutoFitWidth="0" ss:Width="115" />
<Column ss:AutoFitWidth="0" ss:Width="85" />
<Column ss:AutoFitWidth="0" ss:Width="85" />
<Column ss:AutoFitWidth="0" ss:Width="160" />
<Row ss:AutoFitHeight="0" ss:Height="27.75">
<Cell ss:StyleID="s21">
<Data ss:Type="String">Voorbeeld</Data>
</Cell>
</Row>
<Row ss:AutoFitHeight="0" ss:Height="18">
<Cell ss:StyleID="s22">
<Data ss:Type="String">
<xsl:value-of select="shipping/street" />
</Data>
</Cell>
</Row>
<Row>
<Cell>
<Data ss:Type="String">
test
</Data>
</Cell>
</Row>
<xsl:call-template name="orders" />
</Table>
</Worksheet>
</Workbook>
</xsl:for-each>
</xsl:template>
<xsl:template name="orders">
<Row ss:AutoFitHeight="0" ss:Height="18">
<Cell ss:StyleID="s23">
<Data ss:Type="String">
Collumn 1
</Data>
</Cell>
</Row>
<Row>
<Cell ss:StyleID="s24">
<Data ss:Type="String">
Collumn 2
</Data>
</Cell>
<Cell ss:StyleID="s24">
<Data ss:Type="String">
Collumn 3
</Data>
</Cell>
<Cell ss:StyleID="s24">
<Data ss:Type="String">
Collumn 4
</Data>
</Cell>
<Cell ss:StyleID="s24">
<Data ss:Type="String">
Collumn 5
</Data>
</Cell>
</Row>
<xsl:for-each
select="orders/order">
<Row>
<Cell>
<Data ss:Type="String">
<xsl:value-of select="order_id" />
</Data>
</Cell>
<Cell>
<Data ss:Type="String">
<xsl:value-of select="order_id" />
</Data>
</Cell>
<Cell>
<Data ss:Type="String">
<xsl:value-of select="order_id" />
</Data>
</Cell>
<Cell>
<Data ss:Type="String">
<xsl:value-of select="order_id" />
</Data>
</Cell>
</Row>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
</file>
</files>
沃尔贝尔德
测试
合谋1
合谋2
共谋3
共谋4
共谋5
我希望有人能给我指出正确的解决办法
提前谢谢
XML格式的Excel文件扩展名为.xlsx,否则Excel需要BIFF格式。XML格式的Excel文件扩展名为.xlsx,否则Excel需要BIFF格式。在XSLT示例中,您已经将xsl:stylesheet元素包含在文件元素中
<files>
<file filename="Order_%Y%.xls">
<xsl:stylesheet version="1.0" ....
<!-- XSLT Code.... -->
</xsl:stylesheet>
</file>
</files>
尽管这对于Excel XML是正确的,但不需要将其放在XSLT文件中。目前,这将是XSLT处理器的处理指令,XSLT处理器将忽略它!您需要XSLT在输出中写出处理指令。为此,请将此命令添加到第一个模板中
<xsl:template match="/">
<xsl:processing-instruction name="mso-application">
<xsl:text>progid="Excel.Sheet"</xsl:text>
</xsl:processing-instruction>
<xsl:for-each select="orders/order">
progid=“Excel.Sheet”
当我在一个空的XML文件上尝试XSLT时,我能够生成一个成功打开的Excel XML文件。在XSLT示例中,您已经将xsl:stylesheet元素包含在file元素中
<files>
<file filename="Order_%Y%.xls">
<xsl:stylesheet version="1.0" ....
<!-- XSLT Code.... -->
</xsl:stylesheet>
</file>
</files>
尽管这对于Excel XML是正确的,但不需要将其放在XSLT文件中。目前,这将是XSLT处理器的处理指令,XSLT处理器将忽略它!您需要XSLT在输出中写出处理指令。为此,请将此命令添加到第一个模板中
<xsl:template match="/">
<xsl:processing-instruction name="mso-application">
<xsl:text>progid="Excel.Sheet"</xsl:text>
</xsl:processing-instruction>
<xsl:for-each select="orders/order">
progid=“Excel.Sheet”
当我在一个空XML文件上尝试XSLT时,我能够生成一个成功打开的Excel XML文件。如果另存为.XML,Excel 2007在打开时会生成一个错误文件,这可能会有所帮助。当我查看Excel创建的.xml文件时,列位于行内。文件的列中有行。如果另存为.xml,Excel 2007在打开时会生成一个错误文件,这可能会有所帮助。当我查看Excel创建的.xml文件时,列位于行内。您的文件在列中有行。能否显示您正在使用的输入XML的示例?谢谢您能展示一下您正在使用的输入XML的示例吗?谢谢