1

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

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

如何强制使用 Excel 在 OleFrame 中打开扩展名为“xml”的文件?

4

3 回答 3

2

最简单的解决方案是切换回 2003 格式,这不需要对您的应用程序进行任何更改。为此,请打开扩展名为 *.xls 的文件。当出现警告提示(“...您现在要打开文件吗?”)时,继续打开(这是一个警告,以确保您不会无意中打开启用宏的文件)。在 Excel 中打开文件后,只需将其另存为 *.xls。这可以通过转到“Office 按钮/另存为/Excel 97-2003 工作簿”来完成。

现在,更难的解决方案是升级您的应用程序以处理新的 OfficeML 格式。我不知道您正在使用的组件,但它可能仍然适用于新标准中的某些二进制部分(最值得注意的是 VBA 项目),但您将不得不解压缩并开始读取 XML 文件.

如果您还没有这样做,请创建一个新的 Excel 工作簿,将其保存为 *.xlsx(2007 格式),然后在资源管理器中,将其扩展名更改为 *.zip。打开它,看看周围。为了更深入地了解这些文件,我将开始消化这篇MSDN 文章

于 2009-05-12T18:48:45.570 回答
1

也许我遗漏了一些东西,但你不应该只.xslx用作你的扩展吗?我假设通过 OfficeML,您指的是Office Open XML

于 2009-05-11T19:25:35.220 回答
1

<?mso-application progid="Excel.Sheet"?>应该出现在使用的 XSL 模板中。下面的链接清楚地解释了如何包含处理指令。我必须做类似的事情,它对我有用。

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

于 2011-05-18T14:26:40.037 回答