如何在使用 Microsoft.Office.Interop 打开文件时禁用弹出窗口

问题描述 投票:0回答:6

如只读确认、其他提醒等。 如何处理这些弹出窗口?还是忽略他们?

c# ms-office office-interop office-pia
6个回答
32
投票

请参阅我的回答这里。

基本上,您可以通过“显示警报”方法禁用所有警报:

Microsoft.Office.Interop.[OFFICE_APP].Application app = new Microsoft.Office.Interop.[OFFICE_APP].Application();
app.DisplayAlerts = false;

其中 [OFFICE_APP] 是您正在使用的 Office 程序的名称,例如 Word、Excel 等。


6
投票

这是防止安全消息要求您允许宏的另一种选择。

我从 MSDN 阅读了这篇文章,并找出了以下代码:

Application wordApp = new Application()
{
    Visible = false,
    AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable
};

由于在打开文件之前已创建文件副本,因此我不必将 AutomationSecurity 更改回默认设置。


2
投票

添加注释:对于某些受密码保护的文件格式(我测试了 .XLS,但可能还有其他格式),

app.DisplayAlerts = false
不会绕过密码对话框。

在这种情况下,您可以简单地在打开时传递一个假密码,这将引发错误。如果你想的话就抓住它吧。

var app = new Application();
app.DisplayAlerts = false;
var workbook = app.Workbooks.Open(filePath, "fakePassword"); // Bypasses dialog, throws error

在这种情况下抛出的错误是:

System.Runtime.InteropServices.COMException:您提供的密码 是不正确的。确认 CAPS LOCK 键已关闭,并确保 使用正确的大小写。


2
投票

亲爱的“Uriel Fernandez”和他的想法 https://learn.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel._application.automationsecurity?view=excel-pia

引导我想到另一个想法https://learn.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel._application.screenupdating?view=excel-pia#Microsoft_Office_Interop_Excel__Application_ScreenUpdating

因此可以尝试禁用它_Application.ScreenUpdating并且...“您将无法看到代码在做什么,但它会运行得更快”

编辑

Word.Application app = null;
try
{
app = new Word.Application();
app.Visible = false;
app.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone;
app.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
app.ScreenUpdating = false;
// work ...
}
catch {}
app.Quit();
if (app != null) Marshal.ReleaseComObject(app);

0
投票

试试这个:

Microsoft.Office.Interop.Word.Application appWord = new 
Microsoft.Office.Interop.Word.Application();

appWord.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;

这将禁用弹出窗口。


0
投票

对于那些被诅咒得仍然需要使用 Excel Interop 的人来说。

如果您想禁用安全警告,那么通过代码什么都不起作用,就这么简单,除非您的服务器运行旧的 Excel 版本(15 或更早版本)。

app.DisplayAlerts = false;
不会禁用安全警告。

app.AutomationSecurity=Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;
不适用于Excel 365,如果您不在网络框架上,它的对象甚至不可用。

您唯一能做的就是在服务器的 Excel 配置上自行禁用它:

https://support.microsoft.com/en-gb/office/enable-or-disable-security-alerts-about-links-and-files-from-suspicious-websites-a1ac6ae9-5c4a-4eb3-b3f8- 143336039bbe

© www.soinside.com 2019 - 2024. All rights reserved.