Xml转换为Excel xls

时间:2015-04-06 19:49:28

标签: xml vb.net excel xslt openxml

好的,所以我一直在通过VB.Net为一些XML数据进行XSL转换。我一切正常,数据保存为可读的.x​​ls文件。问题是当我尝试打开文档时收到以下内容。

The file you are trying to open, 'Test_Xls.xls', is in a different format than specified by the file extension. Verify that the file is not currupted and is from a trusted source before opening the file. Do you want to open the file now?

  

您要打开的文件,' Test_Xls.xls',是一个不同的   格式比文件扩展名指定的格式。验证文件是否正确   没有被破坏,并且在打开文件之前来自受信任的来源。做   你想现在打开文件吗?

我一直在做一些阅读,但我还没有能够提出任何解决问题的方法。我已经在Notepad ++中使用了.xls文件,并在仍然产生错误的同时剥离了我所能做的一切。我将此作为转换的输出:

<?xml version="1.0" encoding="utf-8"?>
<Workbook 
    xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:user="urn:my-scripts" 
    xmlns:o="urn:schemas-microsoft-com:office:office" 
    xmlns:x="urn:schemas-microsoft-com:office:excel" 
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">

    <Worksheet ss:Name="Testing Data">
        <Table>
            <Row>
                <Cell>
                    <Data ss:Type="String">Tests</Data>
                </Cell>
            </Row>
            <Row>
                <Cell>
                    <Data ss:Type="Number">1</Data>
                </Cell>
            </Row>
        </Table>
    </Worksheet>

</Workbook>

这引出了一个问题..有没有办法生成一个可以通过Xml转换在Excel中看到但没有收到此错误消息的文档?我无法更改注册表,我无法使用任何第三方实用程序。

1 个答案:

答案 0 :(得分:1)

(由于问题似乎已经解决,我已将评论扩展为答案。)

您的方法的问题只是我们可以看到(我们没有看到任何代码,输出文件除外):您的XSLT样式表生成一个XML文档,您使用*.xls保存该文档延期。这会破坏文件,因为在解释为*.xls文件时内容无效。

到目前为止讨论的文件扩展名:

  • *.xsl:二进制格式,默认情况下,旧版本的Excel存储工作表。 XML。
  • *.xslx:Excel使用的格式较新版本。在内部,它是一个包含多个XML组件的压缩文件。
  • *.xml:在这个特定情况下,所谓的&#34; Excel 2004 XML电子表格&#34; (对于Mac;&#34; Excel 2003 XML Spreadsheet&#34;在Windows上)格式,它将文档存储为简单的解压缩XML。顺便说一句,其他Office产品也知道* .xml格式,例如办公室Word)

将转换后的文档保存为*.xml,使Excel清楚地知道内容既不是旧的二进制格式,也不是压缩的XML标准。


更多细节:令人困惑的是,Microsoft Office调色板的压缩XML格式集称为&#34; Office Open XML&#34; (&#34; OOXML&#34;,ECMA-376)。普通的XML格式有时被称为&#34; Microsoft Office XML&#34;格式。较新版本的Excel的具体格式为"SpreadsheetML"

为了使这更复杂,还有&#34; Open Office&#34;,它有一系列其他含义,所有这些都与微软无关。

也许您想看看history of Office XML formats