Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Process.Start在C#中打开Excel文件_C#_Excel_Winforms - Fatal编程技术网

使用Process.Start在C#中打开Excel文件

使用Process.Start在C#中打开Excel文件,c#,excel,winforms,C#,Excel,Winforms,我正在尝试使用单击按钮打开excel文件。由于某种原因,它不起作用。我试过几种方法。你知道他们为什么不工作吗 方法1我试过了。这会打开文件管理器,但不会打开正确的文件。它确实使用了文件的正确路径,并且文件确实存在 private string fileCopy; public RepairResultsControl() { InitializeComponent(); } public void Show(PSRepair.AnalysisResults analysis, str

我正在尝试使用单击按钮打开excel文件。由于某种原因,它不起作用。我试过几种方法。你知道他们为什么不工作吗

方法1我试过了。这会打开文件管理器,但不会打开正确的文件。它确实使用了文件的正确路径,并且文件确实存在

private string fileCopy;

public RepairResultsControl()
{
    InitializeComponent();
}

public void Show(PSRepair.AnalysisResults analysis, string pathNameCopy)
{
    fileCopy = pathNameCopy;
    Show();
}

private void btnGoToFile_Click(object sender, EventArgs e)
{
    Process.Start("explorer.exe", "/select,"+ fileCopy);
}
方法2。这只是没有打开任何东西不知道为什么

System.Diagnostics.Process.Start(@"C:\Users\username\Documents\newTest.xlsx");
  • 尝试以管理员身份运行
  • 检查异常,并且start方法应该返回bool,检查以确保它为真
  • 确保您的xlsx文件与Excel关联(在命令提示下可轻松检查此项,键入文件名并按enter键…如果Excel打开,则表明您很好)
  • 检查系统错误日志

  • 通常,
    Process.Start(@“C:\Users\username\Documents\newTest.xlsx”)将在Excel中打开您的文档

    但是,您在评论中说,您是从后台运行的Excel加载项执行此操作的。解决方案需要考虑到这一点(代码示例假定您有一个VSTO插件,否则需要进行相应调整):


    是否有任何Excel进程潜伏在后台?我的项目是一个Excel加载项,因此它在后台打开。这是一个问题吗?啊,在那种情况下我不知道。当我习惯于自动化Excel时,我会以不活跃的流程结束,这些流程不会响应或打开。但是,如果这是一个加载项,您是否有权访问Excel对象模型以通过它打开电子表格?。。您的第一个代码示例将打开选定文件的资源管理器,这就是
    explorer.exe/select
    所做的。但是,第二个应该在Excel中打开电子表格。我不确定为什么不能。我想不出有什么可能是错误的。我正在尝试直接打开
    xlsx
    文件,获取此异常:Win32Exception:指定的可执行文件不是此操作系统平台的有效应用程序。这可能取决于
    UseShellExecute
    属性的值。确保将其设置为true。我刚才说的是
    进程。启动
    。是的,在属性设置为true的情况下传入一个
    ProcessStartInfo
    。若它仍然失败,你们可能需要修理办公室。
    // make the running Excel instance visible
    Globals.ThisAddIn.Application.Visible = true;
    
    // open the workbook using Excel interop
    Globals.ThisAddIn.Application.Workbooks.Open(fileName);