C# Excel 2010 工作簿打开错误



我们最近从 Excel 2007 升级到 Excel 2010,我们发现现有代码开始失败。

异常消息:

Office 检测到此文件有问题。为了帮助保护您的 计算机 无法打开此文件。

我们已经将其追溯到打开文件的行

excelApp.Workbooks.Open

即使手动打开文件,也会出现"受保护的视图消息框"。

我们如何使用 C# 解决这个问题。

Open语句之前,请查看使用 Application.FileValidation Property (Excel)。

返回或设置 Excel 在打开文件之前验证文件的方式。 读/写

未通过验证的文件将在受保护的视图中打开 窗。如果设置"文件验证"属性,则该设置将 在应用程序打开的整个会话中保持有效。

可以将其设置为 MsoFileValidationMode 枚举中的枚举值之一

mso文件验证默认

msoFileValidationSkip

如果将其设置为 msoFileValidationSkipOpen 语句之前,则应绕过检查。

类似的东西

excelApp.FileValidation = MsoFileValidationMode.msoFileValidationSkip;

在开放声明之前。

这里玩得很晚,但这是一个常见的烦恼:您需要定义一个"受信任位置"。

当你的代码尝试打开电子表格文件时,你并不是遇到此问题的唯一开发人员,并且"Office 检测到此文件有问题。为了帮助保护您的计算机,无法打开此文件。是一个极其无益的错误消息。

查找 Daniel Pineault 在 2010 年 DevHut.net 上发布的受信任位置代码:

DevHut 代码示例:使用 VBScript 的受信任位置

我会因为在 C# 论坛上发布 VBA 而被否决,所以我最好不要发布我对 Daniel 代码的实现(是的,我是一名 VBA 开发人员,整天都在抨击 VBA 宏,而不是一个真正的编码人员处理尖头的东西和大括号)。如果你真的想看VBA,它是在对另一个帖子的回复中:

https://stackoverflow.com/questions/2962728/office-trusted-locations/28115700#28115700

我认为正确的称呼是"分享和享受"。

如果您重复使用代码,请注明原作者 Daniel Pineault:它在"专家"网站上被广泛发布而没有署名,这是相当粗鲁的。

我们遇到了同样的问题。我们在SQL服务器上的SSIS包使用Excel.Interop来解析文件。有一天,我们在新服务器上安装了Office 2010 x64,对于某些文件开始出现错误:

Office 检测到此文件有问题。为了帮助保护您的计算机,无法打开此文件。

同时,其他服务器运行良好。我们在 Excel 版本中发现了区别:14.04763.1000 不起作用,但 14.0.7015.1000 对我们有用。最后一个版本号属于 Office 2010 SP2。最终我们下载了SP2并安装了它,结果,错误已经消失。

最新更新