c# - 无法在 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”。对象是否被移动、重命名或删除?
解决方案
此代码使用 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 或任何其他注册以打开此特定文件扩展名的应用程序。
推荐阅读
- video - 如何制作具有动态内容的视频(例如播放时的当前当地时间)?
- latex - 如何在乳胶中将单词列表设置在同一行
- c# - C# 将结构相同的两个不同名称表的结果放入一个对象中
- pgloader - pgloader:“连接”中的套接字错误:EINTR(中断的系统调用)和 HEAP-EXHAUSTED-ERROR
- java - FirestoreRecyclerAdapter 未导入
- javascript - 使用 Javascript 从 Spring 访问特定的 Set 变量
- typescript - 为什么最小的 ts-vue 模板不起作用?
- php - 如何在 laravel 中获取月度报告,即使没有记录
- python - 循环遍历包含段落标签的 div 标签
- php - 用户信息未从数据库中显示