SWT OleClientSite:如何在Excel中加载XML文件?

我有一个OfficeML格式的Excel文件,MyData.xls。 自从我从Office 2003升级到Office 2007后,我收到一条警告消息,指出文件内容与文件扩展名不匹配。 看来OfficeML现在必须有扩展名“xml”。

在我的应用程序中,我使用OleClientSite在OleFrame对象中显示文件。 如果我将文件扩展名更改为“xml”,则Excel不会启动。 如果我将扩展名保留为“xsl”,那么我会收到上面的警告消息。

我怎样才能强制使用Excel中的OleFrame打开'xml'扩展名的文件?

最简单的解决scheme是切换回2003格式,这不应该需要对您的应用程序进行任何更改。 要做到这一点,打开你的文件扩展名设置为* .xls。 当出现警告提示(“…你想现在打开文件吗?”),继续打开(这是一个警告,以确保你不会无意中打开一个启用macros的文件)。 一旦在Excel中并且文件已打开,只需将其另存为* .xls即可。 这可以通过转到“Officebutton/另存为/ Excel 97-2003工作簿”来完成。

现在,更难的解决scheme将升级您的应用程序来处理新的OfficeML格式。 我不知道你正在使用的组件,但它可能仍然适用于新标准中的一些二进制部分(最显着的是VBA项目),但是你将不得不解压并开始阅读XML文件。

如果您尚未完成此操作,请创build一个新的Excel工作簿,将其另存为* .xlsx(2007格式),然后在资源pipe理器中将其扩展名更改为* .zip。 打开它,看看周围。 为了更深入的文件,我会开始消化这个MSDN文章 。

也许我错过了一些东西,但是不应该只使用.xslx作为扩展名? 我假设你通过OfficeML引用Office Open XML 。

<?mso-application progid="Excel.Sheet"?>应该出现在所使用的XSL模板中。 下面的链接清楚地说明了如何包含处理指令。 我不得不做类似的事情,它为我工作。

http://www.shareyourwork.org/roller/ralphsjavablog/entry/generating_excel_sheets_with_xslt