2015-05-05 2 views
-1

Итак, я создал программу, которая считывает некоторые ячейки из файла Excel (.xlsx), а затем выполняет онлайн-поиск с данными.Программа C#, использующая исключение excel throwing TYPE_E_CANTLOADLIBRARY

Он отлично работает на моем компьютере (Windows 8.1, Visual Studio Community 2013, Office 2013), но когда я отправляю его другу на другом компьютере (Windows 8.1, без Visual Studio, Office 2010), программа показывает ошибку сообщение о том, (плохой перевод с португальского):

System.InvalidCastException: It is not possible to convert the COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' on interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call on component COM for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: Error when loading the library/DLL of type. (Exceção de HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).

в

System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, IntPtr& ppTarget, Boolean& pfNeedsRelease) in Microsoft.Office.Interop.Excel.ApplicationClass.get_Workbooks() in ConsultaProcessos.MainForm.button1_Click(Object sender, EventArgs e)
in System.Windows.Forms.Control.OnClick(EventArgs e) in System.Windows.Forms.Button.OnClick(EventArgs e) in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) in System.Windows.Forms.Control.WndProc(Message& m) in System.Windows.Forms.ButtonBase.WndProc(Message& m) in System.Windows.Forms.Button.WndProc(Message& m) in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Я спросил его, вселить VSTO 2010 и .NET Framework 4.5, но ошибка все равно происходит.

В моем проекте добавлены ссылки Excel 15.0 и Office 15.0 и VSTO 2010.

Есть ли что-нибудь еще, что может быть сделано для этого? Спасибо заранее!

смотри ниже для некоторых из кода

using Excel = Microsoft.Office.Interop.Excel; 
using System.Reflection; 

Excel.Application xlApp; 
Excel.Workbook xlWorkBook; 
Excel.Worksheet xlWorkSheet; 
object misValue = System.Reflection.Missing.Value; 

xlApp = new Excel.Application(); 
Console.WriteLine(Directory.GetCurrentDirectory()); 
xlWorkBook = xlApp.Workbooks.Open(fileName); 
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

//These two lines do the magic. 
xlWorkSheet.Columns.ClearFormats(); 
xlWorkSheet.Rows.ClearFormats(); 

iTotalColumns = xlWorkSheet.UsedRange.Columns.Count; 
iTotalRows = xlWorkSheet.UsedRange.Rows.Count; 

EDIT: Я попытался запустить на другом компьютере с Office 2010, и она работала. Он не работает на конкретном ПК с офисом 2010. Я увижу, исправит ли исправление реестра, предложенное Technovation.

+0

Имеет ли он такую ​​же версию/издание Excel? –

+0

Нет, как описано в моем вопросе, мой офисный пакет - 2013 год, а его 2010 год - – GuiFGDeo

+0

. Эта ссылка: http://stackoverflow.com/questions/12957595/error-accessing-com-components не помогло? – Technovation

ответ

0

my office package is 2013 and his is 2010

Прежде всего, убедитесь, что вы используете свойства и методы, которые существуют в самой старой версии Office. Вы получите исключение, пытающееся вызвать несуществующий метод или свойство. Я бы предложил встраивать типы interop в настройку сборки. Встраивать типы взаимодействия свойства PIAs в true (доступно в .net 4.0 и более поздних версиях).

Имеет ли целевой компьютер (проблемный) установленную версию Click2Run MS Office?

Дело в том, что версия Office2 от Click2Run не поддерживает автоматизацию. Приложения Click2Run не имеют интерфейса автоматизации и не могут быть автоматизированы. См. Office 2010 Click-to-Run compatibility with add-ins для получения дополнительной информации. В нем говорится:

Out-of-process add-ins/applications are stand-alone programs, scripts, or applications that use Office object model APIs to start functionality in the application and integrate with Office. In this case, the out-of-process application drives Office. Out-of-process applications are not supported in Click-to-Run.

Смотрите также 0x80029C4A (TYPE_E_CANTLOADLIBRARY) подобный форум нить.

+0

Я просто попробовал запустить программу на другом компьютере с офисом 2010 года, и это сработало ... Я попробую ваши другие предложения, а также идею реестра, которую Technovation дал и скоро отчитается. – GuiFGDeo

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