我制作了一个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