在我的应用程序中,我需要打开一个受密码保护的excel文件,但我不想输入此密码(这将由用户执行)。
我用Process.Start(path)方法打开它。
问题是我的应用程序正在打开此文件并等待用户输入密码。因此,在用户不输入密码之前,我的应用程序正在等待
我希望我的应用继续下一个代码行,不要等待用户输入密码
有没有人有类似的问题,知道如何解决它?
编辑:
我的代码:
if (File.Exists(_path))
{
//Start the program from _path
Process program = Process.Start(_path);
}
else
{
throw new Exception("File does not exist at path: " + _path);
}
编辑:
解决方案:
解决方案是使用参数启动Excel应用程序,该参数是所选Excel文件的路径。
private void StartProgram(string _path)
{
//Check if file exist
if (File.Exists(_path))
{
ProcessStartInfo processInfo = new ProcessStartInfo();
//Check if file is an Excel sheet
if (FileIsExcelSheet(_path) && ExcelIsInstalled())
{
processInfo.FileName = "Excel";
processInfo.Arguments = _path;
Process program = Process.Start(processInfo);
}
else
{
//Start the program from _path
Process program = Process.Start(_path);
}
}
else
{
throw new Exception("File does not exist at path: " + _path);
}
}
答案 0 :(得分:0)
如果您使用OLE自动化打开文件(即通过它的COM自动化模型驱动Excel,而不是仅仅要求Windows Shell启动它),那么您可以通过在{{1中提供密码来解决此问题。调用。如果您没有正确的密码,那么呼叫将失败,但至少它不会阻止。
当然,这是一个很多更难以打开文件的方式......非常多的情况是“你有一个问题,你解决了它,现在你有99个”。
答案 1 :(得分:0)
您需要将文件名用作Excel,将Argument用作xlsx路径:
Process process = Process.Start(new ProcessStartInfo{
FileName=@"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe",
Arguments=_path
});
我想你可以从另一个线程启动它,但是如果你的应用程序习惯打开这些文件,那么你可能不想浪费所有的线程。