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并安装了它,结果错误消失了。