这是我的问题:
我开发了一个程序,它使用 Microsoft.Excel COM 组件来读取/写入 Excel 文件。嗯,我的应用程序运行良好,但是当我在程序运行时直接使用 Excel 打开另一个文件时,我的应用程序使用的文件会出现在 Excel 中。我不想要这个。我还尝试了 Excel Application 类的 Visibility 属性,但这不是解决方案,它只是不起作用。
注意:我已经检查过这个问题。
限制访问C#程序打开的excel文件 https://stackoverflow.com/questions/3349684/restrict-access-to-excel-file-opened-by-c-program
然而,它实际上说没有适当的解决方案。
您可以使用Application.IgnoreRemoteRequests = true
。这将避免用户在同一个文件夹中打开 Excel 文件Excel
按照您正在使用的方式进行处理。
但有一个警告:您必须确保应用程序的所有执行路径都将此属性重置为false
。这个性质WILL NOT当您退出并释放您的Excel
应用程序意味着Excel
例如,将无法正确响应双击 *.xls 文件的后续用户。
编辑: IgnoreRemoteRequest 可能存在的问题
好的,为了让这一点更清楚,我将详细说明使用此功能可能会遇到的问题(至少这些是我在必须使用此功能时遇到的唯一问题)。
设置时IgnoreRemoteRequests = true
您必须确保在退出和/或释放 COM Excel 应用程序之前重置此属性。如果不这样做,Excel 将不会响应 DDE 请求,这意味着如果有人双击 *.xls 文件,该文件将无法打开(Excel 将启动,但不会自动打开该文件)。
然而,只有当您退出应用程序和/或释放它而不重置属性时,这才是正确的。您只需确保在代码中的任何位置退出/重置时都设置了IgnoreRemoteRquests
回到false
before.
如果您的应用程序崩溃并且无法清理(未处理的异常),那么 EXCEL 进程将继续运行(如果不可见,您只能在任务管理器中看到它)。这是正常的,因为您的应用程序没有机会退出并释放它正在使用的内部 Excel。然而,这不是问题。如果用户忽略这个“泄露”的 Excel 进程,直到它最终在下次重新启动或其他任何情况下被终止,或者从任务栏手动终止它,Excel 将完全正常工作。
注意:MS Excel 2007。不知道以前版本的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)