C#Excel Interop防止Excel窗口变得可见

时间:2018-12-18 15:33:16

标签: c# excel interop

我制作了一个c#应用程序,可以在Excel Interop加载的Excel文件中执行一些计算。

我使用此功能通过以下功能打开excel文件:

private Workbook OpenExcelFile(String path, String password = null)
    {
        if(!File.Exists(path))
        {
            MessageBox.Show("Error loading" + path);
        }

        if (null == excel)
        {
            excel = new Application();
        }
        excel.Visible = false;

        Workbook wb = null;
        if (password != null)
        {
            wb = excel.Workbooks.Open(path, ReadOnly: true, Password: password);
            return wb;
        }

        wb = excel.Workbooks.Open(path, ReadOnly: true);
        return wb;
    }

然后我可以在应用程序中使用工作簿。像这样OpenExcelFile("file.xlsx", "Password")

当我打开编译的exe时,我在“任务管理器”中看到一个新的Excel.exe实例,很好,但是没有显示Excel窗口。

现在我遇到了一个有问题的案例:我使用excel 2010并执行此操作:

我在桌面上创建一个新的Excel文件并打开它。现在,在任务栏中看不到1个,而是2个excel Windows。第一个是“新的Excel文件”,第二个是“ file.xlsx”,软件使用该文件,并且该文件包含一些秘密的业务逻辑,因此对用户不可见,我们不希望用户知道。我还可以使用excel中的excel表格之间的切换按钮来查看“秘密” excel文件。 Excel表格也被解锁。无需输入密码。

当我对Excel 365进行相同操作时,仅打开“新的Excel文件”。我看不到隐藏的excel文件,也看不到任何内容。我没有打开文件或任何东西的时间。我看不到“ file.xlsx”。

所以我的问题是:

有没有一种方法可以防止文件在excel 2010中变得可见。 有没有一种方法可以使文件甚至在excel 365中可见,而无需输入密码。对我们来说,这也是一个糟糕的情况。

哦,我知道这一点:Prevent Workbooks.Open() from making excel visible in windows explorer

0 个答案:

没有答案