好的,所以我一直在通过VB.Net为一些XML数据进行XSL转换。我一切正常,数据保存为可读的.xls文件。问题是当我尝试打开文档时收到以下内容。
您要打开的文件,' 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中看到但没有收到此错误消息的文档?我无法更改注册表,我无法使用任何第三方实用程序。
答案 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;,它有一系列其他含义,所有这些都与微软无关。