C#processstartinfo启动进程excel

时间:2017-05-21 11:06:53

标签: c# excel process processstartinfo

我正在尝试使用文件启动excel。当我用同一个用户运行它时它工作正常。但是对于不同的用户,只有excel启动,并且还有未知错误。

private void button1_Click(object sender, EventArgs e)
        {
            SecureString securePwd = new SecureString();

            string password = "P@ssw0rd1";
            SecureString sec_pass = new SecureString();
            Array.ForEach(password.ToArray(), sec_pass.AppendChar);
            sec_pass.MakeReadOnly();

            ProcessStartInfo ps = new ProcessStartInfo();
            ps.FileName = "c:\\Program Files\\Microsoft Office\\Office15\\EXCEL.EXE";
            ps.Arguments = "c:\\test_folder\\test.xlsx";
            ps.WorkingDirectory = "c:\\test_folder";
            ps.Domain = "test.local";
            ps.UserName = "testuser";
            ps.Password = sec_pass;
            ps.UseShellExecute = false;
            Process.Start(ps);
        }

enter image description here

通过更改进程,完全相同的代码完美无缺 ps.FileName =“c:\ Program Files \ Microsoft Office \ Office15 \ EXCEL.EXE”; 至 ps.FileName =“notepad.EXE”;

如果没有权利问题,即使notepad.exe也不行。

3 个答案:

答案 0 :(得分:1)

知道这是旧帖子,仍然给像我这样的类似问题的人留下回复。 查看您的代码,似乎您可能需要将“ ps.UseShellExecute”设置为“ true”。我在WPF应用中使用按钮尝试了类似的代码(如下所示),它可以打开excel文件而没有问题。

private void Button_Click(object sender, RoutedEventArgs e)
    {
        string myPath = @"C:\Users\Lenovo\Documents\MyFile.xlsx";
        ProcessStartInfo ps = new ProcessStartInfo();
        ps.FileName = "excel"; // "EXCEL.EXE" also works
        ps.Arguments = myPath;
        ps.UseShellExecute = true;
        Process.Start(ps);
    }

当然,不要忘记在.cs脚本顶部添加以下行。

using System.Diagnostics;

那么,祝您编码愉快:)

答案 1 :(得分:0)

这是很正常的事情。如果您在公司工作并且与朋友打开共享Excel文件,其中一个人将获得信息"文件由另一个用户打开"您可以解决此问题,将此文件复制到例如C:/ Temp,然后在共享空间上替换它。

答案 2 :(得分:0)

代码似乎没有任何问题。由于没有改变一点,它刚刚开始正常工作。什么都没有。这只会引发一个问题,例如问题所在。?

有任何建议。?