首页 > 解决方案 > 无法在 C# 项目中打开绑定的 excel 文件

问题描述

我的项目中有一个 excel 文件,它被列为资源。

现在我尝试通过单击这样的按钮打开它:

private void Button_Click_Blist(object sender, RoutedEventArgs e)
{
    Excel.Application xl = new Excel.Application();
    Excel.Workbook wb = xl.Workbooks.Open("Blist.xlsx");
}

我的问题是它说它找不到文件并抛出此异常:

System.Runtime.InteropServices.COMException

我们找不到“Blist.xlsx”。对象是否被移动、重命名或删除?

标签: c#wpf

解决方案


此代码使用 OLE 自动化启动 Excel 并告诉它打开相对路径中的文件Blist.xlsx。在这种情况下,可执行文件是Excel,而不是您自己的应用程序。将使用 Excel 的工作目录解析相对路径。

为避免此问题,请将绝对文件路径传递给 Excel :

var fullPath=Path.GetFullPath("Blist.xlsx");
Excel.Workbook wb = xl.Workbooks.Open(fullPath);

另一种无法控制(或依赖)Excel的可能性是仅使用“启动”文件Process.Start,例如:

Process.Start("Blist.xlsx");

或者

var fullPath=Path.GetFullPath("Blist.xlsx");
Process.Start(fullPath);

Windows Shell 将根据其扩展名找到可以打开此文档的应用程序并启动它,并将文件路径作为参数传递。这可以启动 Excel、Libre Calc 或任何其他注册以打开此特定文件扩展名的应用程序。


推荐阅读