1

我正在尝试使用 C#(VS2010 专业版)代码打开一个 excel 文件(.xlsx)。在执行/单步执行以下代码的最后 2 行时,我遇到了(对我来说无法追踪)异常。下面提到的是我打开现有 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);   

我还在代码的开头包含了以下行。此外,我从 Project->Add Reference (.NET Tab) 添加了 Microsoft.Office.Interop.Excel 的参考

 using Microsoft.Office.Interop.Excel;

谁能告诉我为什么我的代码失败/抛出错误?

问候阿萨德

已编辑* * ** * ** * ** * ** * ** * ** * ** * ** * *

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

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


4

1 回答 1

0

尝试删除双反斜杠并改写 \ 或者你可以做的是

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/

@ 消除了路径的任何问题。代码当然与您的相似。只是我正在以不同的方式重写它。寻找 System.Reflection,我使用的是 System.Type。还有一些对未来的建议,如果您使用 COM 文件,请尝试在最后正确关闭它们。**已编辑。

于 2013-06-04T08:07:00.953 回答