C#Excel 2010工作簿打开错误

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

例外消息:

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

我们已将此跟踪到我们打开文件的行

excelApp.Workbooks.Open 

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

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

Open语句之前查看使用Application.FileValidation属性(Excel) 。

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

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

您可以将其设置为MsoFileValidationMode Enumeration中的一个枚举值

msoFileValidationDefault

msoFileValidationSkip

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

就像是

 excelApp.FileValidation = MsoFileValidationMode.msoFileValidationSkip; 

在公开声明之前。

在这里游戏的后期,但这是一个常见的烦恼:你需要定义一个’可信位置’。

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

查看2010年Daniel Pineault在DevHut.net上发布的可信位置代码:

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

我将在C#论坛上发布VBA,因为我最好不要发布我的实施Daniel的代码(是的,我是VBA开发人员,整天都在抨击VBA宏,而不是真正的编码器工作尖尖的东西和花括号)。 如果你真的想看VBA,那就是对另一篇文章的回复:

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

我相信正确的称呼是“分享和享受”。

如果您重复使用代码,请确认原作者Daniel Pineault:它已在“专家”网站上广泛发布而没有归属,而且相当粗鲁。

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

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

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