2013-06-04 3 views
1

Я пытаюсь открыть файл excel (.xlsx) с использованием кода C# (VS2010 professional). Я получаю исключение (без следа, для меня) при выполнении/одиночном переходе последних двух строк кода ниже. Ниже приведен мой код для открытия существующего файла excel.Ошибка при открытии файла Excel из C# .Net (VS2010)

 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); 

Также я включил эту строку ниже в начале кода. Более того, я добавил ссылку в Microsoft.Office.Interop.Excel из Project-> Add Reference (.NET Tab)

using Microsoft.Office.Interop.Excel; 

Может кто-нибудь посоветовать, почему мой код не удается/метания ошибку?

С уважением Асад

EDITED * * ** * ** * ** * ** * ** * ** * ** * ** * *

Вот сообщение/ошибка, которую я получаю. Обратите внимание, что код не работает даже при выполнении строки xlApp.Visible = ture. Ошибка:

Невозможно нанести COM-объект типа «Microsoft.Office.Interop.Excel.ApplicationClass» на тип интерфейса «Microsoft.Office.Interop.Excel._Application». Эта операция завершилась неудачно, потому что вызов QueryInterface на COM-компоненте для интерфейса с IID '{000208D5-0000-0000-C000-000000000046} не удался из-за следующей ошибки: библиотека не зарегистрирована. (Исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).


+0

Установлен ли MS Excel на компьютере, где вы запускаете этот код? – Andrei

+0

Да, он неактивен в той же машине –

+0

Вам действительно нужно использовать Excel? Возможно, управляемая библиотека Excel - лучший вариант. –

ответ

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-файлами, попытайтесь их правильно закрыть в конце. ** Под ред.

+0

Ошибка/код не срабатывает даже перед выходом команды открытия файла. Он не работает во время выполнения команды Visible. –

+0

Положите try/catch между ним. Я должен был сделать это, потому что вы пытаетесь настроить Excel на видимые/невидимые. – mike27015

+0

Вы можете увидеть сообщение об ошибке в отредактированном/обновленном Вопросе –

Смежные вопросы