打开Excel 2007文件时出错

问题描述:

我对OpenFileDialog类不是很熟悉,但是我正在使用它来选择文件并在C#winform应用程序中打开文件。这是我的语法,当它打开时它有正确的文件名,但它会抛出一个调试错误System.Runtime.InteropServices.COMException: The server threw an exception RPC信息:Exception from HRESULT: 0x80010105 (RPC_E_SERVERFAULT)并且如果内存服务,那是你可以得到的最通用的消息之一。从句法上来说,这个设置是否正确?或者我怎样才能实现我的.xlsx文件打开?打开Excel 2007文件时出错

OpenFileDialog fd = new OpenFileDialog(); 
     fd.Title = "Select The File To Open"; 
     fd.Filter = "Excel Files|*.xlsx"; 
     fd.InitialDirectory = @"C:\"; 
     if (fd.ShowDialog() == DialogResult.OK) 
     { 
      Excel.Application xlsApp = new Excel.Application(); 
      try 
      { 
       Workbook wb = xlsApp.Workbooks.Open(fd.FileName); 
       MessageBox.Show("The file was opened"); 
      } 
      catch (Exception grrr) { MessageBox.Show(grrr.ToString()); } 
     } 
+0

我相信'COMException'通常会给出一个HRESULT错误代码,可以帮助您解读出错的部分。 – Phylogenesis 2015-03-25 01:19:13

+0

@Phylogenesis请参阅编辑。 – user2676140 2015-03-25 01:25:47

+0

你真的*需要*与Excel交互吗?如果您只是想从Excel文件导入数据,那么有更好的方法来做到这一点。使用不带外部依赖项的本机库,如Open XML SDK,EPPlus或NPOI(EPPlus是我的选择)。重量更轻,速度更快,没有依赖性,至少最后两个更容易处理。 – mason 2015-03-25 12:42:57

检查您的参考。例如,如果在运行此项目的计算机上将Excel 2000设置为默认值,但为Excel 2007设置了引用(将显示为Excel 12.0对象库),则会收到上述HRESULT错误。

检查IMO的最快方法是查看您的解决方案资源管理器,然后单击参考旁边的下拉箭头,然后选择Microsoft.Office.Interop.Excel并查看说明中列出的版本。