【问题标题】:Opening an Excel file in C# using Process.Start使用 Process.Start 在 C# 中打开 Excel 文件
【发布时间】:2016-12-01 14:49:37
【问题描述】:

我正在尝试使用单击按钮打开一个 excel 文件。由于某种原因,它不起作用。我已经尝试了几件事。有什么想法为什么它们不起作用?

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

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");

【问题讨论】:

  • 是否有任何 Excel 进程潜伏在后台?
  • 我的项目是一个 excel 插件,因此它在后台打开。这是个问题吗?
  • 啊,不知道在那种情况下。当我过去自动化 Excel 时,我会以不响应或不打开的非活动进程结束。但如果这是一个插件,你就不能通过它访问 Excel 对象模型来打开电子表格吗?
  • .. 您的第一个代码示例将打开资源管理器并选择文件,就像 explorer.exe /select 所做的那样。但是第二个应该在 Excel 中打开电子表格。
  • 我不知道为什么不行,我想不出有什么问题

标签: c# excel winforms


【解决方案1】:

通常,Process.Start(@"C:\Users\username\Documents\newTest.xlsx"); 会在 Excel 中打开您的文档。

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

// make the running Excel instance visible
Globals.ThisAddIn.Application.Visible = true;

// open the workbook using Excel interop
Globals.ThisAddIn.Application.Workbooks.Open(fileName);

【讨论】:

  • 我正在尝试直接打开xlsx 文件,并收到此异常:Win32Exception: The specified executable is not an valid application for this OS platform.跨度>
  • 这可能取决于UseShellExecute 属性的值。确保它设置为 true。
  • 我说的是Process.Start
  • 是的,传入 ProcessStartInfo 并将该属性设置为 true。如果仍然失败,您可能需要修复 Office。
【解决方案2】:
  1. 尝试以管理员身份运行
  2. 检查异常,启动方法也应该返回一个布尔值,检查以确保它是真的。
  3. 确保您的 xlsx 文件与 Excel 相关联(在命令提示符下轻松检查,输入您的文件名并回车...如果 excel 打开,您就可以了)
  4. 检查您的系统错误日志。

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多