6

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

异常消息:

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

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

excelApp.Workbooks.Open

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

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

4

3 回答 3

13

在您的声明之前查看使用Application.FileValidation 属性 (Excel) 。Open

返回或设置 Excel 在打开文件之前如何验证文件。读/写

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

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

msoFileValidationDefault

msoFileValidationSkip

如果你将它设置msoFileValidationSkipOpen语句之前,它应该绕过检查。

就像是

excelApp.FileValidation = MsoFileValidationMode.msoFileValidationSkip;

在公开声明之前。

于 2012-08-17T04:17:48.703 回答
0

这里游戏迟到了,但这是一个常见的烦恼:您需要定义一个“受信任的位置”。

当您的代码尝试打开电子表格文件并且 “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 表示感谢:它已在“专家”网站上广泛发布,但未注明出处,这是相当粗鲁的。

于 2015-01-23T18:05:56.667 回答
0

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

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

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

于 2016-04-04T10:54:22.703 回答