从C#.Net(VS2010)打开Excel文件时出错

我试图打开一个Excel文件(.xlsx)使用C#(VS2010专业)的代码。 当执行/单步执行下面代码的最后2行时,我得到了一个(不可追踪的,对我来说)exception。 下面提到的是我打开现有的Excel文件的代码。

string tesfile = "C:\\Users\\AWaheed3\\Desktop\\1.xlsx"; Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; object misValue = System.Reflection.Missing.Value; xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.Visible = true; xlWorkBook = xlApp.Workbooks.Open(tesfile, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue); 

此外,我已经在代码的开始处包含了下面这行。 更多更多我已添加从项目 – >添加引用(.NET选项卡)Microsoft.Office.Interop.Excel的引用

  using Microsoft.Office.Interop.Excel; 

任何人都可以告诉我为什么我的代码失败/抛出一个错误?

问候阿萨德

编辑* * ** * ** * ** * ** * ** * ** * ** * ** * *

这是我收到的信息/错误。 请注意,即使执行xlApp.Visible = ture行,代码也会失败。 错误是

无法将“Microsoft.Office.Interop.Excel.ApplicationClass”types的COM对象转换为接口types“Microsoft.Office.Interop.Excel._Application”。 此操作失败,因为IID为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:库未注册。 (来自HRESULT的exception:0x8002801D(TYPE_E_LIBNOTREGISTERED))。


尝试删除双反斜杠 ,而不是\写,或者你可以做的是

 Microsoft.Office.Interop.Excel.Application excel = null; Microsoft.Office.Interop.Excel.Workbook xls = null; try { excel = new Microsoft.Office.Interop.Excel.Application(); object missing = Type.Missing; object trueObject = true; try { excel.Visible = false; // or true excel.DisplayAlerts = false; } catch(Exception e) { Console.WriteLine("-------Error hiding the application-------"); Console.WriteLine("Occured error might be: " + e.StackTrace); } xls = excel.Workbooks.Open(excelFile, missing, trueObject, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); //xls = excel.Workbooks.Open(@"file.xls", missing, trueObject, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); } catch (Exception ex) { MessageBox.Show("Error accessing Excel document.\n\n" + ex.Message); } // Must be surrounded by try catch to work. // http://naimishpandya.wordpress.com/2010/12/31/hide-power-point-application-window-in-net-office-automation/ 

@删除path的任何问题。 代码当然是类似于你的。 只是我以不同的方式重写它。 查找System.Reflection,而是使用System.Type。 有一些关于未来的build议,如果你使用COM文件,最后要正确地closures它们。 **编辑。